From: Michael Beck Date: Tue, 11 Apr 2006 11:41:29 +0000 (+0000) Subject: add a memory input to all constants, needed for the optimized scheduler X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=d98d4ab0a6cf8e162331f4f908b17ecd874e941d;p=libfirm add a memory input to all constants, needed for the optimized scheduler --- diff --git a/ir/be/ia32/ia32_optimize.c b/ir/be/ia32/ia32_optimize.c index 5715d36da..1f9904843 100644 --- a/ir/be/ia32/ia32_optimize.c +++ b/ir/be/ia32/ia32_optimize.c @@ -86,13 +86,12 @@ static ir_node *gen_SymConst(ia32_transform_env_t *env) { if (mode_is_float(mode)) { FP_USED(env->cg); if (USE_SSE2(env->cg)) - cnst = new_rd_ia32_xConst(dbg, irg, block, mode); + cnst = new_rd_ia32_xConst(dbg, irg, block, get_irg_no_mem(irg), mode); else - cnst = new_rd_ia32_vfConst(dbg, irg, block, mode); - } - else { - cnst = new_rd_ia32_Const(dbg, irg, block, mode); + cnst = new_rd_ia32_vfConst(dbg, irg, block, get_irg_no_mem(irg), mode); } + else + cnst = new_rd_ia32_Const(dbg, irg, block, get_irg_no_mem(irg), mode); set_ia32_Const_attr(cnst, env->irn); return cnst; } @@ -188,7 +187,7 @@ static ir_node *gen_Const(ia32_transform_env_t *env) { cnst = gen_SymConst(env); } else { - cnst = new_rd_ia32_Const(dbg, irg, block, get_irn_mode(node)); + cnst = new_rd_ia32_Const(dbg, irg, block, get_irg_no_mem(irg), get_irn_mode(node)); set_ia32_Const_attr(cnst, node); } return cnst; diff --git a/ir/be/ia32/ia32_spec.pl b/ir/be/ia32/ia32_spec.pl index bd59ba529..b2016b6a7 100644 --- a/ir/be/ia32/ia32_spec.pl +++ b/ir/be/ia32/ia32_spec.pl @@ -439,7 +439,7 @@ $comment_string = "/*"; "irn_flags" => "R", "comment" => "represents an integer constant", "cmp_attr" => " return ia32_compare_immop_attr(attr_a, attr_b);\n", - "reg_req" => { "out" => [ "gp" ] }, + "reg_req" => { "in" => [ "none" ], "out" => [ "gp" ] }, }, "Cdq" => { @@ -635,7 +635,7 @@ $comment_string = "/*"; "irn_flags" => "R", "comment" => "represents a SSE constant", "cmp_attr" => " return ia32_compare_immop_attr(attr_a, attr_b);\n", - "reg_req" => { "out" => [ "xmm" ] }, + "reg_req" => { "in" => [ "none" ], "out" => [ "xmm" ] }, "emit" => '. mov%M %D1, %C /* Load fConst into register */', }, @@ -878,7 +878,7 @@ $comment_string = "/*"; "irn_flags" => "R", "comment" => "represents a virtual floating point constant", "cmp_attr" => " return ia32_compare_immop_attr(attr_a, attr_b);\n", - "reg_req" => { "out" => [ "vfp" ] }, + "reg_req" => { "in" => [ "none" ], "out" => [ "vfp" ] }, }, # other diff --git a/ir/be/ia32/ia32_transform.c b/ir/be/ia32/ia32_transform.c index 63f4a9f92..032330a6d 100644 --- a/ir/be/ia32/ia32_transform.c +++ b/ir/be/ia32/ia32_transform.c @@ -884,7 +884,7 @@ static ir_node *generate_DivMod(ia32_transform_env_t *env, ir_node *dividend, ir edx_node = new_rd_Proj(dbg, irg, block, cltd, mode_Is, pn_ia32_Cdq_EDX); } else { - edx_node = new_rd_ia32_Const(dbg, irg, block, mode_Iu); + edx_node = new_rd_ia32_Const(dbg, irg, block, get_irg_no_mem(irg), mode_Iu); set_ia32_Const_type(edx_node, ia32_Const); set_ia32_Immop_tarval(edx_node, get_tarval_null(mode_Iu)); } @@ -1530,7 +1530,7 @@ static ir_node *gen_CopyB(ia32_transform_env_t *env) { rem = size & 0x3; /* size % 4 */ size >>= 2; - res = new_rd_ia32_Const(dbg, irg, block, mode_Is); + res = new_rd_ia32_Const(dbg, irg, block, get_irg_no_mem(irg), mode_Is); set_ia32_op_type(res, ia32_Const); set_ia32_Immop_tarval(res, new_tarval_from_long(size, mode_Is)); diff --git a/ir/be/ia32/ia32_x87.c b/ir/be/ia32/ia32_x87.c index 1e4b0a17d..9f8539467 100644 --- a/ir/be/ia32/ia32_x87.c +++ b/ir/be/ia32/ia32_x87.c @@ -1581,7 +1581,6 @@ static void x87_init_simulator(x87_simulator *sim, ir_graph *irg, const arch_env sim->env = env; FIRM_DBG_REGISTER(dbg, "firm.be.ia32.x87"); - firm_dbg_set_mask(dbg, SET_LEVEL_2); DB((dbg, LEVEL_1, "--------------------------------\n" "x87 Simulator started for %+F\n", irg));