Commit c51ec0a3 by Andrew MacLeod Committed by Andrew Macleod

optabs.c (expand_atomic_load): Do not assume compare_and_swap will succeed for…

optabs.c (expand_atomic_load): Do not assume compare_and_swap will succeed for larger than word integers.


	* optabs.c (expand_atomic_load): Do not assume compare_and_swap will
	succeed for larger than word integers.

From-SVN: r184009
parent ea72cc1d
2012-02-08 Andrew MacLeod <amacleod@redhat.com>
* optabs.c (expand_atomic_load): Do not assume compare_and_swap will
always succeed for integers larger than a native word.
2012-02-08 Richard Guenther <rguenther@suse.de>
PR rtl-optimization/52170
......
......@@ -7665,9 +7665,12 @@ expand_atomic_load (rtx target, rtx mem, enum memmodel model)
/* Issue val = compare_and_swap (mem, 0, 0).
This may cause the occasional harmless store of 0 when the value is
already 0, but it seems to be OK according to the standards guys. */
expand_atomic_compare_and_swap (NULL, &target, mem, const0_rtx,
const0_rtx, false, model, model);
return target;
if (expand_atomic_compare_and_swap (NULL, &target, mem, const0_rtx,
const0_rtx, false, model, model))
return target;
else
/* Otherwise there is no atomic load, leave the library call. */
return NULL_RTX;
}
/* Otherwise assume loads are atomic, and emit the proper barriers. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment