cris: Correct gcc_assert for atomic_fetch_op pattern
Yet another misnumbering of operands: the asserted non-overlap would be the only benign operands overlap. "Suddenly" exposed by g++.dg/cpp0x/pr81325.C when testing unrelated changes affecting register allocation. To wit, operands 2 and 1 are the only ones that are safe for overlap, it's only that it doesn't seem to make much sense to write the address of the atomic data as the atomic data. gcc: * config/cris/sync.md ("cris_atomic_fetch_<atomic_op_name><mode>_1"): Correct gcc_assert of overlapping operands.
This commit is contained in:
parent
df66f280ec
commit
1e98f06028
@ -128,7 +128,11 @@
|
||||
"<MODE>mode == QImode || !TARGET_ATOMICS_MAY_CALL_LIBFUNCS"
|
||||
{
|
||||
/* Can't be too sure; better ICE if this happens. */
|
||||
gcc_assert (!reg_overlap_mentioned_p (operands[2], operands[1]));
|
||||
gcc_assert (!reg_overlap_mentioned_p (operands[0], operands[1])
|
||||
&& !reg_overlap_mentioned_p (operands[0], operands[2])
|
||||
&& !reg_overlap_mentioned_p (operands[0], operands[3])
|
||||
&& !reg_overlap_mentioned_p (operands[1], operands[3])
|
||||
&& !reg_overlap_mentioned_p (operands[2], operands[3]));
|
||||
|
||||
if (cris_cpu_version == 10)
|
||||
return
|
||||
|
Loading…
Reference in New Issue
Block a user