Commit 3a22ad89 by Nick Clifton Committed by Nick Clifton

mn10300.c (popcount): New function.

	* config/mn10300/mn10300.c (popcount): New function.
	(mn10300_expand_prologue): Include saved registers in stack usage
	count.

From-SVN: r207665
parent a596d940
2014-02-10 Nick Clifton <nickc@redhat.com>
* config/mn10300/mn10300.c (popcount): New function.
(mn10300_expand_prologue): Include saved registers in stack usage
count.
2014-02-10 Jeff Law <law@redhat.com>
PR middle-end/52306
......
......@@ -741,16 +741,31 @@ mn10300_gen_multiple_store (unsigned int mask)
F (emit_insn (x));
}
static inline unsigned int
popcount (unsigned int mask)
{
unsigned int count = 0;
while (mask)
{
++ count;
mask &= ~ (mask & - mask);
}
return count;
}
void
mn10300_expand_prologue (void)
{
HOST_WIDE_INT size = mn10300_frame_size ();
unsigned int mask;
if (flag_stack_usage_info)
current_function_static_stack_size = size;
mask = mn10300_get_live_callee_saved_regs (NULL);
/* If we use any of the callee-saved registers, save them now. */
mn10300_gen_multiple_store (mn10300_get_live_callee_saved_regs (NULL));
mn10300_gen_multiple_store (mask);
if (flag_stack_usage_info)
current_function_static_stack_size = size + popcount (mask) * 4;
if (TARGET_AM33_2 && fp_regs_to_save ())
{
......@@ -767,6 +782,9 @@ mn10300_expand_prologue (void)
unsigned int strategy_size = (unsigned)-1, this_strategy_size;
rtx reg;
if (flag_stack_usage_info)
current_function_static_stack_size += num_regs_to_save * 4;
/* We have several different strategies to save FP registers.
We can store them using SP offsets, which is beneficial if
there are just a few registers to save, or we can use `a0' in
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment