aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/shrink-wrap.c4
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6d2d20f..c47da4c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
+ * shrink-wrap.c: Include function-abi.h.
+ (requires_stack_frame_p): Use crtl->abi to test whether the
+ current function can use a register without saving it first.
+
+2019-09-30 Richard Sandiford <richard.sandiford@arm.com>
+
* sel-sched-ir.h (_def::crosses_call): Replace with...
(_def::crossed_call_abis): ..this new field.
(def_list_add): Take a mask of ABIs instead of a crosses_call
diff --git a/gcc/shrink-wrap.c b/gcc/shrink-wrap.c
index 0186966..2dc92c3 100644
--- a/gcc/shrink-wrap.c
+++ b/gcc/shrink-wrap.c
@@ -43,7 +43,7 @@ along with GCC; see the file COPYING3. If not see
#include "regcprop.h"
#include "rtl-iter.h"
#include "valtrack.h"
-
+#include "function-abi.h"
/* Return true if INSN requires the stack frame to be set up.
PROLOGUE_USED contains the hard registers used in the function
@@ -76,7 +76,7 @@ requires_stack_frame_p (rtx_insn *insn, HARD_REG_SET prologue_used,
}
if (hard_reg_set_intersect_p (hardregs, prologue_used))
return true;
- hardregs &= ~call_used_or_fixed_regs;
+ hardregs &= ~crtl->abi->full_reg_clobbers ();
for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
if (TEST_HARD_REG_BIT (hardregs, regno)
&& df_regs_ever_live_p (regno))