aboutsummaryrefslogtreecommitdiff
path: root/gcc/reg-stack.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/reg-stack.c')
-rw-r--r--gcc/reg-stack.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c
index bdd1c98..19f6660 100644
--- a/gcc/reg-stack.c
+++ b/gcc/reg-stack.c
@@ -303,7 +303,7 @@ stack_regs_mentioned (insn)
unsigned int uid, max;
int test;
- if (! INSN_P (insn))
+ if (! INSN_P (insn) || !stack_regs_mentioned_data)
return 0;
uid = INSN_UID (insn);
@@ -419,6 +419,13 @@ reg_to_stack (first, file)
int max_uid;
block_info bi;
+ /* Clean up previous run. */
+ if (stack_regs_mentioned_data)
+ {
+ VARRAY_FREE (stack_regs_mentioned_data);
+ stack_regs_mentioned_data = 0;
+ }
+
if (!optimize)
split_all_insns (0);
@@ -479,11 +486,8 @@ reg_to_stack (first, file)
VARRAY_CHAR_INIT (stack_regs_mentioned_data, max_uid + 1,
"stack_regs_mentioned cache");
- if (convert_regs (file) && optimize)
- cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_CROSSJUMP | CLEANUP_POST_REGSTACK);
+ convert_regs (file);
- /* Clean up. */
- VARRAY_FREE (stack_regs_mentioned_data);
free (bi);
}