diff options
Diffstat (limited to 'contrib/gcc/optabs.c')
-rw-r--r-- | contrib/gcc/optabs.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/contrib/gcc/optabs.c b/contrib/gcc/optabs.c index c9eb3e6..d4eb640 100644 --- a/contrib/gcc/optabs.c +++ b/contrib/gcc/optabs.c @@ -3532,7 +3532,12 @@ prepare_operand (icode, x, opnum, mode, wider_mode, unsignedp) if (! (*insn_data[icode].operand[opnum].predicate) (x, insn_data[icode].operand[opnum].mode)) - x = copy_to_mode_reg (insn_data[icode].operand[opnum].mode, x); + { + if (no_new_pseudos) + return NULL_RTX; + x = copy_to_mode_reg (insn_data[icode].operand[opnum].mode, x); + } + return x; } @@ -5483,7 +5488,12 @@ gen_cond_trap (code, op1, op2, tcode) start_sequence (); op1 = prepare_operand (icode, op1, 0, mode, mode, 0); - op2 = prepare_operand (icode, op2, 0, mode, mode, 0); + op2 = prepare_operand (icode, op2, 1, mode, mode, 0); + if (!op1 || !op2) + { + end_sequence (); + return 0; + } emit_insn (GEN_FCN (icode) (op1, op2)); PUT_CODE (trap_rtx, code); |