(do_store_flag): Ensure we don't get confused when emit_store_flag
fails and an operand has a QUEUED. From-SVN: r2540
This commit is contained in:
parent
1a94ca4920
commit
d39985fabf
10
gcc/expr.c
10
gcc/expr.c
@ -7160,8 +7160,14 @@ do_store_flag (exp, target, mode, only_cheap)
|
|||||||
if (target == 0)
|
if (target == 0)
|
||||||
target = gen_reg_rtx (mode);
|
target = gen_reg_rtx (mode);
|
||||||
|
|
||||||
result = emit_store_flag (target, code, op0, op1, operand_mode,
|
/* Pass copies of OP0 and OP1 in case they contain a QUEUED. This is safe
|
||||||
unsignedp, 1);
|
because, if the emit_store_flag does anything it will succeed and
|
||||||
|
OP0 and OP1 will not be used subsequently. */
|
||||||
|
|
||||||
|
result = emit_store_flag (target, code,
|
||||||
|
queued_subexp_p (op0) ? copy_rtx (op0) : op0,
|
||||||
|
queued_subexp_p (op1) ? copy_rtx (op1) : op1,
|
||||||
|
operand_mode, unsignedp, 1);
|
||||||
|
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user