ia32_IJmp needs the no-out-requirements hack, too.
[libfirm] / ir / be / ia32 / ia32_nodes_attr.h
index 7dfe5eb..8b4e92c 100644 (file)
@@ -27,7 +27,7 @@
 #define FIRM_BE_IA32_IA32_NODES_ATTR_H
 
 #include "firm_types.h"
-#include "../bearch_t.h"
+#include "../bearch.h"
 #include "../bemachine.h"
 #include "irnode_t.h"
 
@@ -96,6 +96,7 @@ struct ia32_attr_t {
                unsigned am_scale:2;            /**< The address mode scale for index register. */
                unsigned am_sc_sign:1;          /**< The sign bit of the address mode symconst. */
 
+               unsigned am_sc_no_pic_adjust : 1;/**< AM symconst can be relative to EIP */
                unsigned use_frame:1;           /**< Indicates whether the operation uses the frame pointer or not. */
                unsigned has_except_label:1;        /**< Set if this node needs a label because of possible exception. */
 
@@ -123,7 +124,6 @@ struct ia32_attr_t {
        const be_execution_unit_t ***exec_units; /**< list of units this operation can be executed on */
 
        const arch_register_req_t **in_req;  /**< register requirements for arguments */
-       const arch_register_req_t **out_req; /**< register requirements for results */
 
        ir_label_t        exc_label;       /**< the exception label iff this instruction can throw an exception */
 
@@ -170,7 +170,8 @@ struct ia32_immediate_attr_t {
        ia32_attr_t  attr;              /**< generic attribute */
        ir_entity   *symconst;          /**< An entity if any. */
        long         offset;            /**< An offset if any. */
-       unsigned     sc_sign:1;         /**< The sign bit of the symconst. */
+       unsigned     sc_sign : 1;       /**< The sign bit of the symconst. */
+       unsigned     no_pic_adjust : 1; /**< constant can be relative to EIP */
 };
 
 /**