X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fia32%2Fia32_common_transform.h;h=94a49a238b51044b9fa5c2d334df709dc1d89193;hb=b7951fa25fe21c4a44dc29c7c9b0dc1acfcf5e94;hp=2e22b5e90f8a712d9ed2ee1ef47f72acdb13e04f;hpb=c4d387cb4389654e978ea808027ea2be724c513c;p=libfirm diff --git a/ir/be/ia32/ia32_common_transform.h b/ir/be/ia32/ia32_common_transform.h index 2e22b5e90..94a49a238 100644 --- a/ir/be/ia32/ia32_common_transform.h +++ b/ir/be/ia32/ia32_common_transform.h @@ -21,7 +21,7 @@ * @file * @brief This file implements the common parts of IR transformation from * firm into ia32-Firm. - * @author Sebastian Buchwald + * @author Matthias Braun, Sebastian Buchwald * @version $Id: ia32_common_transform.h 20999 2008-08-05 16:48:29Z beck $ */ #ifndef FIRM_BE_IA32_IA32_COMMON_TRANSFORM_H @@ -45,6 +45,7 @@ struct constraint_t { extern ia32_code_gen_t *env_cg; extern heights_t *heights; +extern int no_pic_adjust; /** * Get an atomic entity that is initialized with a tarval forming @@ -61,7 +62,7 @@ ir_entity *create_float_const_entity(ir_node *cnst); * @param symconst_sign sign for the symconst * @param val integer value for the immediate */ -ir_node *create_Immediate(ir_entity *symconst, int symconst_sign, long val); +ir_node *ia32_create_Immediate(ir_entity *symconst, int symconst_sign, long val); /** * returns register by name (used for determining clobber specifications in @@ -69,13 +70,6 @@ ir_node *create_Immediate(ir_entity *symconst, int symconst_sign, long val); */ const arch_register_t *ia32_get_clobber_register(const char *clobber); -#ifndef NDEBUG -/** - * Prints the old node name on cg obst and returns a pointer to it. - */ -const char *ia32_get_old_node_name(ia32_code_gen_t *cg, ir_node *irn); -#endif /* NDEBUG */ - /** * Return true if a mode can be stored in the GP register set. */ @@ -86,6 +80,18 @@ int ia32_mode_needs_gp_reg(ir_mode *mode); */ ir_node *gen_ASM(ir_node *node); +/** + * Transforms a CopyB node. + * + * @return The transformed 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 * as this is not done during register allocation because Unknown @@ -98,6 +104,20 @@ const arch_register_req_t *make_register_req(const constraint_t *constraint, const arch_register_req_t *parse_clobber(const char *clobber); +/** + * Checks whether other node inputs depend on the am_candidate (via mem-proj). + */ +int prevents_AM(ir_node *const block, ir_node *const am_candidate, + ir_node *const other); + ir_node *try_create_Immediate(ir_node *node, char immediate_constraint_type); +/** + * creates a unique ident by adding a number to a tag + * + * @param tag the tag string, must contain a %d if a number + * should be added + */ +ident *ia32_unique_id(const char *tag); + #endif /* FIRM_BE_IA32_IA32_COMMON_TRANSFORM_H */