X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeabi.c;h=26e1b0e825623e411c43f6f062277617959e3391;hb=0b1140d1887f497ef413709e5cda2608f2cd1017;hp=51a3d9c35b5b30fcb790391ca97bdcee10494c87;hpb=a68dfa0a328a5859012053ad0200a1e01465875b;p=libfirm diff --git a/ir/be/beabi.c b/ir/be/beabi.c index 51a3d9c35..26e1b0e82 100644 --- a/ir/be/beabi.c +++ b/ir/be/beabi.c @@ -2131,13 +2131,13 @@ static void fix_pic_symconsts(ir_node *node, void *data) mode = get_irn_mode(pred); unknown = new_r_Unknown(irg, mode); pic_base = arch_code_generator_get_pic_base(env->birg->cg); - add = new_r_Add(irg, block, pic_base, pred, mode); - - /* make sure the walker doesn't visit this add again */ - mark_irn_visited(add); /* all ok now for locally constructed stuff */ if (can_address_relative(entity)) { + ir_node *add = new_r_Add(irg, block, pic_base, pred, mode); + + /* make sure the walker doesn't visit this add again */ + mark_irn_visited(add); set_irn_n(node, i, add); continue; } @@ -2147,7 +2147,8 @@ static void fix_pic_symconsts(ir_node *node, void *data) pic_symbol = get_pic_symbol(be, entity); pic_symconst = new_rd_SymConst_addr_ent(dbgi, irg, mode_P_code, pic_symbol, NULL); - set_Add_right(add, pic_symconst); + add = new_r_Add(irg, block, pic_base, pic_symconst, mode); + mark_irn_visited(add); /* we need an extra indirection for global data outside our current module. The loads are always safe and can therefore float