summaryrefslogtreecommitdiff
path: root/gcc/reg-stack.c
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2003-02-20 20:56:53 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2003-02-20 20:56:53 +0000
commit38099b6a720b30fe633d811be24a9c219f049c1c (patch)
tree2415e41e359f1d67f528163fbed9de0eeb20bffe /gcc/reg-stack.c
parent8256165059003b850cf8e21d3a79e7d3bc2b849f (diff)
downloadgcc-38099b6a720b30fe633d811be24a9c219f049c1c.tar.gz
* toplev.c (flag_sched2_use_superblocks, flag_sched2_use_traces): New global variables.
(lang_independent_options): Add -fsched2-use-superblocks -fsced2-use-traces. (rest_of_compilation): Deal with it. * invoke.texi (-fsched2-use-traces, fsched2-use-superblocks): Declare. * flags.h (flag_sched2_use_superblocks, flag_sched2_use_traces): Declare. * rtl.h (reg_to_stack): Update prototype. * reg-stack.c (reg_to_stack): Return when something has changed; update liveness when executing after superblock scheduling. * combine.c (simplify_shift_const): Simplify few special cases into constants. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63183 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/reg-stack.c')
-rw-r--r--gcc/reg-stack.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c
index 965aad0b24d..f8f4b3144bf 100644
--- a/gcc/reg-stack.c
+++ b/gcc/reg-stack.c
@@ -416,7 +416,7 @@ pop_stack (regstack, regno)
code duplication created when the converter inserts pop insns on
the edges. */
-void
+bool
reg_to_stack (first, file)
rtx first;
FILE *file;
@@ -437,11 +437,15 @@ reg_to_stack (first, file)
if (regs_ever_live[i])
break;
if (i > LAST_STACK_REG)
- return;
+ return false;
/* Ok, floating point instructions exist. If not optimizing,
- build the CFG and run life analysis. */
- if (!optimize)
+ build the CFG and run life analysis.
+ Also need to rebuild life when superblock scheduling is done
+ as it don't update liveness yet. */
+ if (!optimize
+ || (flag_sched2_use_superblocks
+ && flag_schedule_insns_after_reload))
{
count_or_remove_death_notes (NULL, 1);
life_analysis (first, file, PROP_DEATH_NOTES);
@@ -498,6 +502,7 @@ reg_to_stack (first, file)
convert_regs (file);
free_aux_for_blocks ();
+ return true;
}
/* Check PAT, which is in INSN, for LABEL_REFs. Add INSN to the