projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
make block numbers accross functions more deterministic
[libfirm]
/
ir
/
be
/
sparc
/
sparc_stackframe.c
diff --git
a/ir/be/sparc/sparc_stackframe.c
b/ir/be/sparc/sparc_stackframe.c
index
b14a17c
..
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 */