diff options
author | Naveen H.S <Naveen.Hurugalawadi@cavium.com> | 2017-06-30 03:50:44 +0000 |
---|---|---|
committer | Naveen H.S <naveenh@gcc.gnu.org> | 2017-06-30 03:50:44 +0000 |
commit | 509f819a8e8ab900f303ea6ccdb8e90e97de7f3c (patch) | |
tree | 544e45c8cc92cee4f1b2dae86f6fd2e8c56e7dfa /gcc/sched-deps.c | |
parent | 44b222cee619ddf7211b0659a7b6b73331f7e1a0 (diff) | |
download | gcc-509f819a8e8ab900f303ea6ccdb8e90e97de7f3c.zip gcc-509f819a8e8ab900f303ea6ccdb8e90e97de7f3c.tar.gz gcc-509f819a8e8ab900f303ea6ccdb8e90e97de7f3c.tar.bz2 |
aarch64.c (aarch_macro_fusion_pair_p): Push the check for CC usage into AARCH64_FUSE_CMP_BRANCH.
2017-06-29 Naveen H.S <Naveen.Hurugalawadi@cavium.com>
* config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Push the
check for CC usage into AARCH64_FUSE_CMP_BRANCH.
* config/i386/i386.c (ix86_macro_fusion_pair_p): Push the check for
CC usage from generic code to here.
* sched-deps.c (sched_macro_fuse_insns): Move the condition for
CC usage into the target macros.
From-SVN: r249827
Diffstat (limited to 'gcc/sched-deps.c')
-rw-r--r-- | gcc/sched-deps.c | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index b2393bf..4c459e6 100644 --- a/gcc/sched-deps.c +++ b/gcc/sched-deps.c @@ -2834,34 +2834,30 @@ static void sched_macro_fuse_insns (rtx_insn *insn) { rtx_insn *prev; - + prev = prev_nonnote_nondebug_insn (insn); + if (!prev) + return; + if (any_condjump_p (insn)) { unsigned int condreg1, condreg2; rtx cc_reg_1; targetm.fixed_condition_code_regs (&condreg1, &condreg2); cc_reg_1 = gen_rtx_REG (CCmode, condreg1); - prev = prev_nonnote_nondebug_insn (insn); - if (!reg_referenced_p (cc_reg_1, PATTERN (insn)) - || !prev - || !modified_in_p (cc_reg_1, prev)) - return; + if (reg_referenced_p (cc_reg_1, PATTERN (insn)) + && modified_in_p (cc_reg_1, prev)) + { + if (targetm.sched.macro_fusion_pair_p (prev, insn)) + SCHED_GROUP_P (insn) = 1; + return; + } } - else - { - rtx insn_set = single_set (insn); - - prev = prev_nonnote_nondebug_insn (insn); - if (!prev - || !insn_set - || !single_set (prev)) - return; + if (single_set (insn) && single_set (prev)) + { + if (targetm.sched.macro_fusion_pair_p (prev, insn)) + SCHED_GROUP_P (insn) = 1; } - - if (targetm.sched.macro_fusion_pair_p (prev, insn)) - SCHED_GROUP_P (insn) = 1; - } /* Get the implicit reg pending clobbers for INSN and save them in TEMP. */ |