lower_dw: huge refactoring, allow custom lowering funcs, fix endianess problems
[libfirm] / include / libfirm / irgraph.h
index a433bcb..63324ad 100644 (file)
  *                   with a Sel node the pointer to a thread local variable.
  *
  * - args            The ir_node that produces the arguments of the method as
- *                   it's result.  This is a Proj node on the fourth output of
+ *                   its result.  This is a Proj node on the fourth output of
  *                   the start node.  This output is tagged as pn_Start_T_args.
  *
  * - proj_args       The proj nodes of the args node.
  *
- * - bad             The Bad node is an auxiliary node. It is needed only once,
- *                   so there is this globally reachable node.
- *
  * - no_mem          The NoMem node is an auxiliary node. It is needed only once,
  *                   so there is this globally reachable node.
  *
@@ -138,11 +135,11 @@ FIRM_API void set_current_ir_graph(ir_graph *graph);
  * to point to this graph. Further it allocates the following nodes needed
  * for every procedure:
  *
- * - The start block containing a start node and Proj nodes for it's
+ * - The start block containing a start node and Proj nodes for its
  *   seven results (X, M, P, P, P, T, P).
  * - The end block containing an end node. This block is not matured
  *   after executing new_ir_graph() as predecessors need to be added to it.
- *   (Maturing a block means fixing it's number of predecessors.)
+ *   (Maturing a block means fixing its number of predecessors.)
  * - The current block, which is empty and also not matured.
  *
  * Further it enters the global store into the data structure of the start
@@ -227,11 +224,6 @@ FIRM_API ir_node *get_irg_frame(const ir_graph *irg);
 /** Sets the node that represents the frame pointer of the given IR graph. */
 FIRM_API void set_irg_frame(ir_graph *irg, ir_node *node);
 
-/** Returns the node that represents the tls pointer of the given IR graph. */
-FIRM_API ir_node *get_irg_tls(const ir_graph *irg);
-/** Sets the node that represents the tls pointer of the given IR graph. */
-FIRM_API void set_irg_tls(ir_graph *irg, ir_node *node);
-
 /** Returns the node that represents the initial memory of the given IR graph. */
 FIRM_API ir_node *get_irg_initial_mem(const ir_graph *irg);
 /** Sets the node that represents the initial memory of the given IR graph. */
@@ -242,11 +234,7 @@ FIRM_API ir_node *get_irg_args(const ir_graph *irg);
 /** Sets the node that represents the argument pointer of the given IR graph. */
 FIRM_API void set_irg_args(ir_graph *irg, ir_node *node);
 
-/** Returns the Bad node of the given IR graph.  Use new_Bad() instead!! */
-FIRM_API ir_node *get_irg_bad(const ir_graph *irg);
-FIRM_API void set_irg_bad(ir_graph *irg, ir_node *node);
-
-/** Returns the NoMem node of the given IR graph.  Use new_NoMem() instead!! */
+/** Returns the NoMem node of the given IR graph. */
 FIRM_API ir_node *get_irg_no_mem(const ir_graph *irg);
 FIRM_API void set_irg_no_mem(ir_graph *irg, ir_node *node);
 
@@ -261,7 +249,7 @@ FIRM_API long get_irg_graph_nr(const ir_graph *irg);
  * smaller than get_irp_last_idx()
  * Note: you cannot use this number for get_irp_irg()
  */
-FIRM_API int get_irg_idx(const ir_graph *irg);
+FIRM_API size_t get_irg_idx(const ir_graph *irg);
 
 /**
  * Get the node for an index.
@@ -525,6 +513,7 @@ typedef enum {
        IR_GRAPH_STATE_KEEP_MUX      = 1U << 0,  /**< should perform no further optimisations on Mux nodes */
        IR_GRAPH_STATE_ARCH_DEP      = 1U << 1,  /**< should not construct more nodes which irarch potentially breaks down */
        IR_GRAPH_STATE_BCONV_ALLOWED = 1U << 2,  /**< Conv(mode_b) to Iu is allowed as set command */
+       IR_GRAPH_STATE_BAD_BLOCK     = 1U << 3,  /**< a node may have Bad in its block input */
 } ir_graph_state_t;
 ENUM_BITSET(ir_graph_state_t)
 
@@ -532,7 +521,7 @@ ENUM_BITSET(ir_graph_state_t)
 FIRM_API void set_irg_state(ir_graph *irg, ir_graph_state_t state);
 /** clear some state flags of the graph */
 FIRM_API void clear_irg_state(ir_graph *irg, ir_graph_state_t state);
-/** query wether a set of graph state flags are activated */
+/** query whether a set of graph state flags are activated */
 FIRM_API int is_irg_state(const ir_graph *irg, ir_graph_state_t state);
 
 /** Set a description for local value n. */