+2014-02-20 Richard Henderson <rth@redhat.com>
+
+ PR c++/60272
+ * builtins.c (expand_builtin_atomic_compare_exchange): Always make
+ a new pseudo for OLDVAL.
+
2014-02-20 Jakub Jelinek <jakub@redhat.com>
PR target/57896
if (target == const0_rtx)
target = NULL;
- oldval = expect;
- if (!expand_atomic_compare_and_swap (&target, &oldval, mem, oldval, desired,
+ /* Lest the rtl backend create a race condition with an imporoper store
+ to memory, always create a new pseudo for OLDVAL. */
+ oldval = NULL;
+
+ if (!expand_atomic_compare_and_swap (&target, &oldval, mem, expect, desired,
is_weak, success, failure))
return NULL_RTX;