projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Remove the very thin wrapper function arch_register_get_name().
[libfirm]
/
ir
/
be
/
sparc
/
sparc_stackframe.c
diff --git
a/ir/be/sparc/sparc_stackframe.c
b/ir/be/sparc/sparc_stackframe.c
index
ce542b3
..
23283f4
100644
(file)
--- a/
ir/be/sparc/sparc_stackframe.c
+++ b/
ir/be/sparc/sparc_stackframe.c
@@
-50,9
+50,6
@@
static void set_irn_sp_bias(ir_node *node, int new_bias)
static void process_bias(ir_node *block, bool sp_relative, int bias,
int free_bytes)
{
static void process_bias(ir_node *block, bool sp_relative, int bias,
int free_bytes)
{
- const ir_edge_t *edge;
- ir_node *irn;
-
mark_Block_block_visited(block);
/* process schedule */
mark_Block_block_visited(block);
/* process schedule */
@@
-68,6
+65,14
@@
static void process_bias(ir_node *block, bool sp_relative, int bias,
arch_set_frame_offset(irn, offset);
}
arch_set_frame_offset(irn, offset);
}
+ /* The additional alignment bytes cannot be used
+ * anymore after alloca. */
+ if (is_sparc_SubSP(irn)) {
+ free_bytes = 0;
+ } else if (is_sparc_AddSP(irn)) {
+ assert(free_bytes == 0);
+ }
+
irn_bias = arch_get_sp_bias(irn);
if (irn_bias == 0) {
/* do nothing */
irn_bias = arch_get_sp_bias(irn);
if (irn_bias == 0) {
/* do nothing */
@@
-280,7
+285,7
@@
void sparc_create_stacklayout(ir_graph *irg, calling_convention_t *cconv)
/* Assign entity offsets, to all stack-related entities.
* The offsets are relative to the begin of the stack frame.
*/
/* Assign entity offsets, to all stack-related entities.
* The offsets are relative to the begin of the stack frame.
*/
-
static void process_frame_type
s(ir_graph *irg)
+
void sparc_adjust_stack_entity_offset
s(ir_graph *irg)
{
be_stack_layout_t *layout = be_get_irg_stack_layout(irg);
{
be_stack_layout_t *layout = be_get_irg_stack_layout(irg);
@@
-324,6
+329,7
@@
static void process_frame_types(ir_graph *irg)
unsigned misalign = (SPARC_MIN_STACKSIZE+frame_size) % frame_align;
frame_size += misalign;
}
unsigned misalign = (SPARC_MIN_STACKSIZE+frame_size) % frame_align;
frame_size += misalign;
}
+ set_type_size_bytes(frame_type, frame_size);
ir_type *arg_type = layout->arg_type;
ir_type *arg_type = layout->arg_type;
@@
-338,8
+344,6
@@
void sparc_fix_stack_bias(ir_graph *irg)
ir_node *start_block = get_irg_start_block(irg);
ir_node *start_block = get_irg_start_block(irg);
- process_frame_types(irg);
-
ir_reserve_resources(irg, IR_RESOURCE_BLOCK_VISITED);
inc_irg_block_visited(irg);
process_bias(start_block, sp_relative, 0, 0);
ir_reserve_resources(irg, IR_RESOURCE_BLOCK_VISITED);
inc_irg_block_visited(irg);
process_bias(start_block, sp_relative, 0, 0);