X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fia32%2Fia32_common_transform.h;h=28fd0dd4b9a40aa13f0c8e4c55776e3c68822d46;hb=51071bf6e2b48696447f7aa3e858a75535e97666;hp=1f7a524b13b06715222f640367b5dc12666c3b6f;hpb=b38b52e7426cd2bf243282db922e135422d435b7;p=libfirm diff --git a/ir/be/ia32/ia32_common_transform.h b/ir/be/ia32/ia32_common_transform.h index 1f7a524b1..28fd0dd4b 100644 --- a/ir/be/ia32/ia32_common_transform.h +++ b/ir/be/ia32/ia32_common_transform.h @@ -21,13 +21,14 @@ * @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 #define FIRM_BE_IA32_IA32_COMMON_TRANSFORM_H #include "bearch_ia32_t.h" +#include "height.h" /** * An assembler constraint. @@ -43,6 +44,7 @@ struct constraint_t { }; extern ia32_code_gen_t *env_cg; +extern heights_t *heights; /** * Get an atomic entity that is initialized with a tarval forming @@ -84,6 +86,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 @@ -96,6 +110,12 @@ 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); #endif /* FIRM_BE_IA32_IA32_COMMON_TRANSFORM_H */