aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2009-01-06 21:58:46 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2009-01-06 21:58:46 +0000
commitace984c85138fbc4aa823a3aae0d0eba2d117437 (patch)
treec4301cbdf655765fd7d6cb61637ee0e9b20c8114
parent3145cc701b458b2ce77db7b49111c011a176ff45 (diff)
downloadgcc-ace984c85138fbc4aa823a3aae0d0eba2d117437.zip
gcc-ace984c85138fbc4aa823a3aae0d0eba2d117437.tar.gz
gcc-ace984c85138fbc4aa823a3aae0d0eba2d117437.tar.bz2
re PR rtl-optimization/38426 (Incorrect code produced with -momit-leaf-frame-pointer -fno-unit-at-a-time)
gcc/ PR rtl-optimization/38426. * ira.c (ira): Set current_function_is_leaf earlier. From-SVN: r143135
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ira.c10
2 files changed, 10 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8dafe63..942d733 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2009-01-06 Richard Sandiford <rdsandiford@googlemail.com>
+
+ PR rtl-optimization/38426.
+ * ira.c (ira): Set current_function_is_leaf earlier.
+
2009-01-06 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/38722
diff --git a/gcc/ira.c b/gcc/ira.c
index 2273512..5830bae 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -1879,6 +1879,11 @@ ira (FILE *f)
if (warn_clobbered)
generate_setjmp_warnings ();
+ /* Determine if the current function is a leaf before running IRA
+ since this can impact optimizations done by the prologue and
+ epilogue thus changing register elimination offsets. */
+ current_function_is_leaf = leaf_function_p ();
+
rebuild_p = update_equiv_regs ();
#ifndef IRA_NO_OBSTACK
@@ -1977,11 +1982,6 @@ ira (FILE *f)
delete_trivially_dead_insns (get_insns (), max_reg_num ());
max_regno = max_reg_num ();
- /* Determine if the current function is a leaf before running IRA
- since this can impact optimizations done by the prologue and
- epilogue thus changing register elimination offsets. */
- current_function_is_leaf = leaf_function_p ();
-
/* And the reg_equiv_memory_loc array. */
VEC_safe_grow (rtx, gc, reg_equiv_memory_loc_vec, max_regno);
memset (VEC_address (rtx, reg_equiv_memory_loc_vec), 0,