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.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c
index ec7d069..98b8778 100644
--- a/gcc/reg-stack.c
+++ b/gcc/reg-stack.c
@@ -435,8 +435,7 @@ reg_to_stack (first, file)
life_analysis (first, max_reg_num (), file, 0);
/* Set up block info for each basic block. */
- bi = (block_info) alloca ((n_basic_blocks + 1) * sizeof (*bi));
- memset (bi, 0, (n_basic_blocks + 1) * sizeof (*bi));
+ bi = (block_info) xcalloc ((n_basic_blocks + 1), sizeof (*bi));
for (i = n_basic_blocks - 1; i >= 0; --i)
BASIC_BLOCK (i)->aux = bi + i;
EXIT_BLOCK_PTR->aux = bi + n_basic_blocks;
@@ -483,7 +482,9 @@ reg_to_stack (first, file)
!JUMP_NOOP_MOVES, !JUMP_AFTER_REGSCAN);
}
+ /* Clean up. */
VARRAY_FREE (stack_regs_mentioned_data);
+ free (bi);
}
/* Check PAT, which is in INSN, for LABEL_REFs. Add INSN to the
@@ -2616,7 +2617,7 @@ convert_regs_2 (file, block)
basic_block *stack, *sp;
int inserted;
- stack = (basic_block *) alloca (sizeof (*stack) * n_basic_blocks);
+ stack = (basic_block *) xmalloc (sizeof (*stack) * n_basic_blocks);
sp = stack;
*sp++ = block;