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:
Joern Rennecke 2013-11-11 18:57:25 +00:00 committed by Joern Rennecke
parent c733374a3d
commit b2b262e383
2 changed files with 12 additions and 0 deletions

View File

@ -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>
Eric Botcazou <ebotcazou@adacore.com>

View File

@ -5401,6 +5401,13 @@ emit_store_flag (rtx target, enum rtx_code code, rtx op0, rtx op1,
rtx subtarget;
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,
target_mode);
if (tem)