diff options
Diffstat (limited to 'gcc/config/i386/i386.c')
-rw-r--r-- | gcc/config/i386/i386.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index dc14d205de7..423e97c5040 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -29489,6 +29489,15 @@ ix86_macro_fusion_pair_p (rtx_insn *condgen, rtx_insn *condjmp) if (!any_condjump_p (condjmp)) return false; + unsigned int condreg1, condreg2; + rtx cc_reg_1; + ix86_fixed_condition_code_regs (&condreg1, &condreg2); + cc_reg_1 = gen_rtx_REG (CCmode, condreg1); + if (!reg_referenced_p (cc_reg_1, PATTERN (condjmp)) + || !condgen + || !modified_in_p (cc_reg_1, condgen)) + return false; + if (get_attr_type (condgen) != TYPE_TEST && get_attr_type (condgen) != TYPE_ICMP && get_attr_type (condgen) != TYPE_INCDEC |