fix r19298: offsets must be fixed for PopMem
authorMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Sat, 19 Apr 2008 21:21:54 +0000 (21:21 +0000)
committerMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Sat, 19 Apr 2008 21:21:54 +0000 (21:21 +0000)
[r19337]

ir/be/ia32/bearch_ia32.c

index b107c43..b199cd6 100644 (file)
@@ -385,7 +385,7 @@ static void ia32_set_frame_offset(const void *self, ir_node *irn, int bias)
        if (get_ia32_frame_ent(irn) == NULL)
                return;
 
-       if (is_ia32_Pop(irn)) {
+       if (is_ia32_Pop(irn) || is_ia32_PopMem(irn)) {
                int omit_fp = be_abi_omit_fp(ops->cg->birg->abi);
                if (omit_fp) {
                        /* Pop nodes modify the stack pointer before calculating the
@@ -404,7 +404,7 @@ static int ia32_get_sp_bias(const void *self, const ir_node *node)
        if (is_ia32_Push(node))
                return 4;
 
-       if (is_ia32_Pop(node))
+       if (is_ia32_Pop(node) || is_ia32_PopMem(node))
                return -4;
 
        return 0;