* File name: ir/ir/irnode.h
* Purpose: Representation of an intermediate operation.
* Author: Martin Trapp, Christian Schaefer
- * Modified by: Goetz Lindenmaier
+ * Modified by: Goetz Lindenmaier, Michael Beck
* Created:
* CVS-ID: $Id$
* Copyright: (c) 1998-2003 Universität Karlsruhe
pn_Start_M, /**< Projection on the initial memory. */
pn_Start_P_frame_base, /**< Projection on the frame base pointer. */
pn_Start_P_globals, /**< Projection on the pointer to the data segment
- containing _all_ global entities. */
+ containing _all_ global entities. Use for
+ position independent data/code access. */
+ pn_Start_P_tls, /**< Projection on the pointer to the thread local store
+ segment containing _all_thread local variables. */
pn_Start_T_args, /**< Projection on all arguments. */
pn_Start_P_value_arg_base, /**< Pointer to region of compound value arguments as defined by
type of this method. */
pn_Start_max /**< number of projections from a Start */
} pn_Start; /* Projection numbers for Start. */
-
/** Test whether arbitrary node is frame pointer.
*
* Test whether arbitrary node is frame pointer, i.e. Proj(pn_Start_P_frame_base)
* from Start. If so returns global type, else Null. */
ir_type *is_globals_pointer(ir_node *n);
+/** Test whether arbitrary node is tls pointer.
+ *
+ * Test whether arbitrary node is tls pointer, i.e. Proj(pn_Start_P_tls)
+ * from Start. If so returns tls type, else Null. */
+ir_type *is_tls_pointer(ir_node *n);
+
/** Test whether arbitrary node is value arg base.
*
* Test whether arbitrary node is value arg base, i.e. Proj(pn_Start_P_value_arg_base)
ir_node *get_Conv_op (ir_node *node);
void set_Conv_op (ir_node *node, ir_node *op);
+int get_Conv_strict (ir_node *node);
+void set_Conv_strict (ir_node *node, int flag);
/* Does Cast need a mem operator?
* Cast should only depend on the type, not on the state of an
* Projection numbers for result of Bound node: use for Proj nodes!
*/
typedef enum {
- pn_Bound_M_regular = 0, /**< The memory result. */
+ pn_Bound_M = 0, /**< The memory result. */
pn_Bound_X_except = 1, /**< The control flow result branching to the exception handler */
pn_Bound_res = 2, /**< The checked index. */
- pn_Bound_M_except = 3, /**< The memory result in case the runtime function terminated with
- an exception */
- pn_Bound_max = 4 /**< number of projections from a Bound */
+ pn_Bound_max = 3 /**< number of projections from a Bound */
} pn_Bound;
-#define pn_Bound_M pn_Bound_M_regular
/** Returns the memory input of a Bound operation. */
ir_node *get_Bound_mem(ir_node *bound);