+2005-10-17 Richard Henderson <rth@redhat.com>
+
+ * builtins.c (expand_builtin_synchronize): Build a new-style asm
+ with a memory clobber.
+
2005-10-17 James E Wilson <wilson@specifix.com>
PR rtl-optimization/17356
static void
expand_builtin_synchronize (void)
{
- rtx body;
+ tree x;
#ifdef HAVE_memory_barrier
if (HAVE_memory_barrier)
}
#endif
- /* If no explicit memory barrier instruction is available, create an empty
- asm stmt that will prevent compiler movement across the barrier. */
- body = gen_rtx_ASM_INPUT (VOIDmode, "");
- MEM_VOLATILE_P (body) = 1;
- emit_insn (body);
+ /* If no explicit memory barrier instruction is available, create an
+ empty asm stmt with a memory clobber. */
+ x = build4 (ASM_EXPR, void_type_node, build_string (0, ""), NULL, NULL,
+ tree_cons (NULL, build_string (6, "memory"), NULL));
+ ASM_VOLATILE_P (x) = 1;
+ expand_asm_expr (x);
}
/* Expand the __sync_lock_release intrinsic. ARGLIST is the operands list