From 369b84de0601cff492dbce3f7e534f79fba82afc Mon Sep 17 00:00:00 2001 From: danglin Date: Mon, 14 Sep 2015 12:05:58 +0000 Subject: [PATCH] PR middle-end/67401 * optabs.c (expand_atomic_compare_and_swap): Move result of emitting sync_compare_and_swap_optab libcall to target_oval. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@227746 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/optabs.c | 7 ++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 462a99770711..d5ef728f9e5c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-09-14 John David Anglin + + PR middle-end/67401 + * optabs.c (expand_atomic_compare_and_swap): Move result of emitting + sync_compare_and_swap_optab libcall to target_oval. + 2015-09-14 Marek Polacek * rtlanal.c (split_double): Cast to unsigned when shifting a negative diff --git a/gcc/optabs.c b/gcc/optabs.c index 79c6f06b9913..c2a9b1ce9eff 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -7521,9 +7521,10 @@ expand_atomic_compare_and_swap (rtx *ptarget_bool, rtx *ptarget_oval, if (libfunc != NULL) { rtx addr = convert_memory_address (ptr_mode, XEXP (mem, 0)); - target_oval = emit_library_call_value (libfunc, NULL_RTX, LCT_NORMAL, - mode, 3, addr, ptr_mode, - expected, mode, desired, mode); + rtx target = emit_library_call_value (libfunc, NULL_RTX, LCT_NORMAL, + mode, 3, addr, ptr_mode, + expected, mode, desired, mode); + emit_move_insn (target_oval, target); /* Compute the boolean return value only if requested. */ if (ptarget_bool) -- 2.47.3