From 7509a7b22ffaabde6de69bd5ab3ed9c46a59f15c Mon Sep 17 00:00:00 2001 From: Sebastian Buchwald Date: Tue, 19 Aug 2008 11:11:29 +0000 Subject: [PATCH] Moved creation of ia32_LdTls into common transformer. [r21255] --- ir/be/ia32/ia32_common_transform.c | 25 +++++++++++++++++++++++++ ir/be/ia32/ia32_common_transform.h | 7 ++++++- ir/be/ia32/ia32_transform.c | 12 ------------ 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/ir/be/ia32/ia32_common_transform.c b/ir/be/ia32/ia32_common_transform.c index 5245bb967..658d39379 100644 --- a/ir/be/ia32/ia32_common_transform.c +++ b/ir/be/ia32/ia32_common_transform.c @@ -727,6 +727,31 @@ ir_node *gen_CopyB(ir_node *node) { return res; } +ir_node *gen_Proj_tls(ir_node *node) { + ir_node *block = NULL; + ir_graph *irg = current_ir_graph; + dbg_info *dbgi = NULL; + ir_node *res = NULL; + + switch (be_transformer) { + case TRANSFORMER_DEFAULT: + block = be_transform_node(get_nodes_block(node)); + break; + +#ifdef FIRM_GRGEN_BE + case TRANSFORMER_PBQP: + block = get_nodes_block(node); + break; +#endif + + default: panic("invalid transformer"); + } + + res = new_rd_ia32_LdTls(dbgi, irg, block, mode_Iu); + + return res; +} + ir_node *gen_Unknown(ir_node *node) { ir_mode *mode = get_irn_mode(node); diff --git a/ir/be/ia32/ia32_common_transform.h b/ir/be/ia32/ia32_common_transform.h index 8c1b62c65..6334f35d6 100644 --- a/ir/be/ia32/ia32_common_transform.h +++ b/ir/be/ia32/ia32_common_transform.h @@ -91,7 +91,12 @@ ir_node *gen_ASM(ir_node *node); * * @return The transformed node. */ -ir_node *gen_CopyB(ir_node *node) ; +ir_node *gen_CopyB(ir_node *node); + +/** + * Transform the Thread Local Storage Proj. + */ +ir_node *gen_Proj_tls(ir_node *node); /** * This function just sets the register for the Unknown node diff --git a/ir/be/ia32/ia32_transform.c b/ir/be/ia32/ia32_transform.c index 594c78145..c5efe50e6 100644 --- a/ir/be/ia32/ia32_transform.c +++ b/ir/be/ia32/ia32_transform.c @@ -4316,18 +4316,6 @@ static ir_node *gen_Proj_Quot(ir_node *node) { return new_rd_Unknown(irg, mode); } -/** - * Transform the Thread Local Storage Proj. - */ -static ir_node *gen_Proj_tls(ir_node *node) { - ir_node *block = be_transform_node(get_nodes_block(node)); - ir_graph *irg = current_ir_graph; - dbg_info *dbgi = NULL; - ir_node *res = new_rd_ia32_LdTls(dbgi, irg, block, mode_Iu); - - return res; -} - static ir_node *gen_be_Call(ir_node *node) { ir_node *res = be_duplicate_node(node); be_node_add_flags(res, -1, arch_irn_flags_modify_flags); -- 2.20.1