Commit 9e6a4b77 by Steven Bosscher Committed by David S. Miller

Restore Sparc build.

gcc/

	* config/sparc/sparc.h (INITIAL_ELIMINATION_OFFSET): Split out to
	new function sparc_initial_elimination_offset.
	* config/sparc/sparc.c (sparc_initial_elimination_offset): New
	function.
	* config/sparc/sparc-protos.h (sparc_initial_elimination_offset):
	Prototype it.

From-SVN: r188142
parent 49ab6098
2012-06-02 Steven Bosscher <steven@gcc.gnu.org>
* config/sparc/sparc.h (INITIAL_ELIMINATION_OFFSET): Split out to
new function sparc_initial_elimination_offset.
* config/sparc/sparc.c (sparc_initial_elimination_offset): New
function.
* config/sparc/sparc-protos.h (sparc_initial_elimination_offset):
Prototype it.
2012-06-2 Kenneth Zadeck <zadeck@naturalbridge.com>
* expmed.c (expand_mult, choose_multiplier): Change "2 *
......
......@@ -37,6 +37,7 @@ extern enum direction function_arg_padding (enum machine_mode, const_tree);
extern void order_regs_for_local_alloc (void);
extern HOST_WIDE_INT sparc_compute_frame_size (HOST_WIDE_INT, int);
extern int sparc_initial_elimination_offset (int);
extern void sparc_expand_prologue (void);
extern void sparc_flat_expand_prologue (void);
extern void sparc_expand_epilogue (bool);
......
......@@ -4551,6 +4551,23 @@ sparc_compute_frame_size (HOST_WIDE_INT size, int leaf_function)
return frame_size;
}
/* Implement the macro INITIAL_ELIMINATION_OFFSET, return the OFFSET. */
int
sparc_initial_elimination_offset (int to)
{
int offset;
if (to == STACK_POINTER_REGNUM)
offset = sparc_compute_frame_size (get_frame_size (),
current_function_is_leaf);
else
offset = 0;
offset += SPARC_STACK_BIAS;
return offset;
}
/* Output any necessary .register pseudo-ops. */
void
......
......@@ -1104,15 +1104,12 @@ extern char leaf_reg_remap[];
{{ FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}, \
{ FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM} }
#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
do { \
if ((TO) == STACK_POINTER_REGNUM) \
(OFFSET) = sparc_compute_frame_size (get_frame_size (), \
current_function_is_leaf); \
else \
(OFFSET) = 0; \
(OFFSET) += SPARC_STACK_BIAS; \
} while (0)
#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
do \
{ \
(OFFSET) = sparc_initial_elimination_offset ((TO)); \
} \
while (0)
/* Keep the stack pointer constant throughout the function.
This is both an optimization and a necessity: longjmp
......
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