X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fsparc%2Fsparc_stackframe.c;h=23283f417850ced7fd1b72be3ac2d198955ba2eb;hb=cf8cb33a340cf13eabad65f2fa5b27cfb4c1db67;hp=b14a17cf8cec2795c463dd5a758541049d5a9423;hpb=0c6c4fcf2dd1d2f28194b04e205789f06584c23e;p=libfirm diff --git a/ir/be/sparc/sparc_stackframe.c b/ir/be/sparc/sparc_stackframe.c index b14a17cf8..23283f417 100644 --- 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) { - const ir_edge_t *edge; - ir_node *irn; - 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); } + /* 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 */