re PR middle-end/59049 (Two VOIDmode constant in comparison passed to cstoresi4)
PR middle-end/59049 * expmed.c (emit_store_flag): Fail for const-const comparison. From-SVN: r204682
This commit is contained in:
parent
c733374a3d
commit
b2b262e383
|
@ -1,3 +1,8 @@
|
||||||
|
2013-11-11 Joern Rennecke <joern.rennecke@embecosm.com>
|
||||||
|
|
||||||
|
PR middle-end/59049
|
||||||
|
* expmed.c (emit_store_flag): Fail for const-const comparison.
|
||||||
|
|
||||||
2013-11-11 Tristan Gingold <gingold@adacore.com>
|
2013-11-11 Tristan Gingold <gingold@adacore.com>
|
||||||
Eric Botcazou <ebotcazou@adacore.com>
|
Eric Botcazou <ebotcazou@adacore.com>
|
||||||
|
|
||||||
|
|
|
@ -5401,6 +5401,13 @@ emit_store_flag (rtx target, enum rtx_code code, rtx op0, rtx op1,
|
||||||
rtx subtarget;
|
rtx subtarget;
|
||||||
rtx tem, last, trueval;
|
rtx tem, last, trueval;
|
||||||
|
|
||||||
|
/* If we compare constants, we shouldn't use a store-flag operation,
|
||||||
|
but a constant load. We can get there via the vanilla route that
|
||||||
|
usually generates a compare-branch sequence, but will in this case
|
||||||
|
fold the comparison to a constant, and thus elide the branch. */
|
||||||
|
if (CONSTANT_P (op0) && CONSTANT_P (op1))
|
||||||
|
return NULL_RTX;
|
||||||
|
|
||||||
tem = emit_store_flag_1 (target, code, op0, op1, mode, unsignedp, normalizep,
|
tem = emit_store_flag_1 (target, code, op0, op1, mode, unsignedp, normalizep,
|
||||||
target_mode);
|
target_mode);
|
||||||
if (tem)
|
if (tem)
|
||||||
|
|
Loading…
Reference in New Issue