mirror of git://gcc.gnu.org/git/gcc.git
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
This commit is contained in:
parent
49ab6098ee
commit
9e6a4b7701
|
@ -1,3 +1,12 @@
|
|||
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
|
||||
|
|
Loading…
Reference in New Issue