X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Famd64%2Famd64_transform.c;h=fbf32c962193ae97d8d15e90738d194feb09cbcb;hb=b35afc79238e7731b8b3beecc69468cb719735f5;hp=6d4d6df36d006aead74302c4c7332389847c3341;hpb=1a3b7d363474ab544c13093a2f0b578718d37c7a;p=libfirm diff --git a/ir/be/amd64/amd64_transform.c b/ir/be/amd64/amd64_transform.c index 6d4d6df36..fbf32c962 100644 --- a/ir/be/amd64/amd64_transform.c +++ b/ir/be/amd64/amd64_transform.c @@ -20,7 +20,6 @@ /** * @file * @brief code selection (transform FIRM into amd64 FIRM) - * @version $Id: amd64_transform.c 26673 2009-10-01 16:43:13Z matze $ */ #include "config.h" @@ -34,9 +33,9 @@ #include "error.h" #include "debug.h" -#include "../benode.h" -#include "../betranshlp.h" -#include "../beutil.h" +#include "benode.h" +#include "betranshlp.h" +#include "beutil.h" #include "bearch_amd64_t.h" #include "amd64_nodes_attr.h" @@ -180,7 +179,7 @@ static ir_node *gen_Jmp(ir_node *node) static ir_node *gen_be_Call(ir_node *node) { ir_node *res = be_duplicate_node(node); - arch_irn_add_flags(res, arch_irn_flags_modify_flags); + arch_add_irn_flags(res, arch_irn_flags_modify_flags); return res; } @@ -197,7 +196,7 @@ static ir_node *gen_Cmp(ir_node *node) bool is_unsigned; if (mode_is_float(cmp_mode)) { - panic("Floating point not implemented yet (in gen_Cmp)!"); + panic("Floating point not implemented yet!"); } assert(get_irn_mode(op2) == cmp_mode); @@ -303,18 +302,10 @@ static bool upper_bits_clean(ir_node *transformed_node, ir_mode *mode) } #endif -/** - * Change some phi modes - */ static ir_node *gen_Phi(ir_node *node) { + ir_mode *mode = get_irn_mode(node); const arch_register_req_t *req; - ir_node *block = be_transform_node(get_nodes_block(node)); - ir_graph *irg = current_ir_graph; - dbg_info *dbgi = get_irn_dbg_info(node); - ir_mode *mode = get_irn_mode(node); - ir_node *phi; - if (mode_needs_gp_reg(mode)) { /* all integer operations are on 64bit registers now */ mode = mode_Lu; @@ -323,22 +314,9 @@ static ir_node *gen_Phi(ir_node *node) req = arch_no_register_req; } - /* phi nodes allow loops, so we use the old arguments for now - * and fix this later */ - phi = new_ir_node(dbgi, irg, block, op_Phi, mode, get_irn_arity(node), - get_irn_in(node) + 1); - copy_node_attr(irg, node, phi); - be_duplicate_deps(node, phi); - - arch_set_out_register_req(phi, 0, req); - - be_enqueue_preds(node); - - return phi; + return be_transform_phi(node, req); } - - /** * Transforms a Conv node. * @@ -361,7 +339,6 @@ static ir_node *gen_Conv(ir_node *node) } else { /* complete in gp registers */ int src_bits = get_mode_size_bits(src_mode); int dst_bits = get_mode_size_bits(dst_mode); - int min_bits; ir_mode *min_mode; if (src_bits == dst_bits) { @@ -370,10 +347,8 @@ static ir_node *gen_Conv(ir_node *node) } if (src_bits < dst_bits) { - min_bits = src_bits; min_mode = src_mode; } else { - min_bits = dst_bits; min_mode = dst_mode; } @@ -518,9 +493,6 @@ static ir_node *gen_Proj(ir_node *node) } else if (be_is_AddSP(pred)) { //panic("gen_Proj not implemented for AddSP"); return gen_Proj_be_AddSP(node); - } else if (is_Cmp(pred)) { - //panic("gen_Proj not implemented for Cmp"); - return gen_Proj_Cmp(node); } else if (is_Div(pred)) { return gen_Proj_Div(node); #endif