aboutsummaryrefslogtreecommitdiff
path: root/gcc/sched-deps.c
diff options
context:
space:
mode:
authorNaveen H.S <Naveen.Hurugalawadi@cavium.com>2017-06-30 03:50:44 +0000
committerNaveen H.S <naveenh@gcc.gnu.org>2017-06-30 03:50:44 +0000
commit509f819a8e8ab900f303ea6ccdb8e90e97de7f3c (patch)
tree544e45c8cc92cee4f1b2dae86f6fd2e8c56e7dfa /gcc/sched-deps.c
parent44b222cee619ddf7211b0659a7b6b73331f7e1a0 (diff)
downloadgcc-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.c34
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. */