From: Christian Würdig Date: Tue, 4 Jul 2006 15:04:16 +0000 (+0000) Subject: fixed load+store generation, handly symconst as base correct X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=d30285cc1a6a3a5083348b2434861d361ff53070;p=libfirm fixed load+store generation, handly symconst as base correct --- diff --git a/ir/be/ia32/ia32_transform.c b/ir/be/ia32/ia32_transform.c index 9f789d9f2..1b9c5f3b4 100644 --- a/ir/be/ia32/ia32_transform.c +++ b/ir/be/ia32/ia32_transform.c @@ -1312,7 +1312,7 @@ static ir_node *gen_Load(ia32_transform_env_t *env) { ir_mode *mode = get_Load_mode(node); int is_imm = 0; ir_node *new_op; - ia32_am_flavour_t am_flav = ia32_B; + ia32_am_flavour_t am_flav = ia32_am_B; /* address might be a constant (symconst or absolute address) */ if (is_ia32_Const(ptr)) { @@ -1333,14 +1333,14 @@ static ir_node *gen_Load(ia32_transform_env_t *env) { /* base is an constant address */ if (is_imm) { - if (get_ia32_immop_type(ptr) == ia32_ImmSymConst) { + if (get_ia32_op_type(ptr) == ia32_SymConst) { set_ia32_am_sc(new_op, get_ia32_id_cnst(ptr)); + am_flav = ia32_am_N; } else { add_ia32_am_offs(new_op, get_ia32_cnst(ptr)); + am_flav = ia32_am_O; } - - am_flav = ia32_O; } set_ia32_am_support(new_op, ia32_am_Source); @@ -1382,7 +1382,7 @@ static ir_node *gen_Store(ia32_transform_env_t *env) { ir_node *sval = val; int is_imm = 0; ir_node *new_op; - ia32_am_flavour_t am_flav = ia32_B; + ia32_am_flavour_t am_flav = ia32_am_B; ia32_immop_type_t immop = ia32_ImmNone; if (! mode_is_float(mode)) { @@ -1431,12 +1431,12 @@ static ir_node *gen_Store(ia32_transform_env_t *env) { if (is_imm) { if (get_ia32_immop_type(ptr) == ia32_ImmSymConst) { set_ia32_am_sc(new_op, get_ia32_id_cnst(ptr)); + am_flav = ia32_am_N; } else { add_ia32_am_offs(new_op, get_ia32_cnst(ptr)); + am_flav = ia32_am_O; } - - am_flav = ia32_O; } set_ia32_am_support(new_op, ia32_am_Dest);