This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH][ARM] Fix checking RTL error in cortex_a9_sched_adjust_cost
- From: Kyrill Tkachov <kyrylo dot tkachov at arm dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Cc: Ramana Radhakrishnan <ramana dot radhakrishnan at arm dot com>, Richard Earnshaw <Richard dot Earnshaw at arm dot com>
- Date: Thu, 29 Oct 2015 16:02:23 +0000
- Subject: [PATCH][ARM] Fix checking RTL error in cortex_a9_sched_adjust_cost
- Authentication-results: sourceware.org; auth=none
Hi all,
An arm-none-eabi build with RTL checking and --with-cpu=cortex-a9 fails because
cortex_a9_sched_adjust_cost tries to access the SET_DEST of a PARALLEL.
The correct thing to do is to call single_set on dep, which will return a simple SET
that we can take the SET_DEST of or NULL if there's more than one SET.
This patch does that.
The arm-none-eabi build passes.
Bootstrapped and tested on arm-none-linux-gnueabihf.
Ok for trunk?
Thanks,
Kyrill
2015-10-29 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/arm/arm.c (cortex_a9_sched_adjust_cost): Use reg_set_p to
check for dependencies.
commit bef3ba20485085d702b9a6c8683683db49b547f0
Author: Kyrylo Tkachov <kyrylo.tkachov@arm.com>
Date: Tue Oct 27 18:09:29 2015 +0000
[ARM] Fix checking RTL error in cortex_a9_sched_adjust_cost
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 08a852d..452b23d 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -11649,9 +11649,7 @@ cortex_a9_sched_adjust_cost (rtx_insn *insn, rtx link, rtx_insn *dep, int * cost
case. However this gets modeled as an true
dependency and hence all these checks. */
if (REG_P (SET_DEST (PATTERN (insn)))
- && REG_P (SET_DEST (PATTERN (dep)))
- && reg_overlap_mentioned_p (SET_DEST (PATTERN (insn)),
- SET_DEST (PATTERN (dep))))
+ && reg_set_p (SET_DEST (PATTERN (insn)), dep))
{
/* FMACS is a special case where the dependent
instruction can be issued 3 cycles before