backend: put ignore regs into beirg
[libfirm] / ir / ir / irgraph_t.h
index e0ade39..9cc9fde 100644 (file)
@@ -31,7 +31,6 @@
 
 #include "irtypes.h"
 #include "irprog.h"
-#include "pseudo_irg.h"
 #include "type_t.h"
 #include "entity_t.h"
 #include "iredgekinds.h"
@@ -108,7 +107,7 @@ static inline int _is_ir_graph(const void *thing)
 /** Returns the start block of a graph. */
 static inline ir_node *_get_irg_start_block(const ir_graph *irg)
 {
-       return get_irn_intra_n(irg->anchor, anchor_start_block);
+       return get_irn_n(irg->anchor, anchor_start_block);
 }
 
 static inline void _set_irg_start_block(ir_graph *irg, ir_node *node)
@@ -118,7 +117,7 @@ static inline void _set_irg_start_block(ir_graph *irg, ir_node *node)
 
 static inline ir_node *_get_irg_start(const ir_graph *irg)
 {
-       return get_irn_intra_n(irg->anchor, anchor_start);
+       return get_irn_n(irg->anchor, anchor_start);
 }
 
 static inline void _set_irg_start(ir_graph *irg, ir_node *node)
@@ -128,7 +127,7 @@ static inline void _set_irg_start(ir_graph *irg, ir_node *node)
 
 static inline ir_node *_get_irg_end_block(const ir_graph *irg)
 {
-       return get_irn_intra_n(irg->anchor, anchor_end_block);
+       return get_irn_n(irg->anchor, anchor_end_block);
 }
 
 static inline void _set_irg_end_block(ir_graph *irg, ir_node *node)
@@ -139,7 +138,7 @@ static inline void _set_irg_end_block(ir_graph *irg, ir_node *node)
 
 static inline ir_node *_get_irg_end(const ir_graph *irg)
 {
-       return get_irn_intra_n(irg->anchor, anchor_end);
+       return get_irn_n(irg->anchor, anchor_end);
 }
 
 static inline void _set_irg_end(ir_graph *irg, ir_node *node)
@@ -147,29 +146,9 @@ static inline void _set_irg_end(ir_graph *irg, ir_node *node)
        set_irn_n(irg->anchor, anchor_end, node);
 }
 
-static inline ir_node *_get_irg_end_reg(const ir_graph *irg)
-{
-       return get_irn_intra_n(irg->anchor, anchor_end_reg);
-}
-
-static inline void _set_irg_end_reg(ir_graph *irg, ir_node *node)
-{
-       set_irn_n(irg->anchor, anchor_end_reg, node);
-}
-
-static inline ir_node *_get_irg_end_except(const ir_graph *irg)
-{
-       return get_irn_intra_n(irg->anchor, anchor_end_except);
-}
-
-static inline void _set_irg_end_except(ir_graph *irg, ir_node *node)
-{
-       set_irn_n(irg->anchor, anchor_end_except, node);
-}
-
 static inline ir_node *_get_irg_initial_exec(const ir_graph *irg)
 {
-       return get_irn_intra_n(irg->anchor, anchor_initial_exec);
+       return get_irn_n(irg->anchor, anchor_initial_exec);
 }
 
 static inline void _set_irg_initial_exec(ir_graph *irg, ir_node *node)
@@ -179,7 +158,7 @@ static inline void _set_irg_initial_exec(ir_graph *irg, ir_node *node)
 
 static inline ir_node *_get_irg_frame(const ir_graph *irg)
 {
-       return get_irn_intra_n(irg->anchor, anchor_frame);
+       return get_irn_n(irg->anchor, anchor_frame);
 }
 
 static inline void _set_irg_frame(ir_graph *irg, ir_node *node)
@@ -189,7 +168,7 @@ static inline void _set_irg_frame(ir_graph *irg, ir_node *node)
 
 static inline ir_node *_get_irg_tls(const ir_graph *irg)
 {
-       return get_irn_intra_n(irg->anchor, anchor_tls);
+       return get_irn_n(irg->anchor, anchor_tls);
 }
 
 static inline void _set_irg_tls(ir_graph *irg, ir_node *node)
@@ -199,7 +178,7 @@ static inline void _set_irg_tls(ir_graph *irg, ir_node *node)
 
 static inline ir_node *_get_irg_initial_mem(const ir_graph *irg)
 {
-       return get_irn_intra_n(irg->anchor, anchor_initial_mem);
+       return get_irn_n(irg->anchor, anchor_initial_mem);
 }
 
 static inline void _set_irg_initial_mem(ir_graph *irg, ir_node *node)
@@ -209,7 +188,7 @@ static inline void _set_irg_initial_mem(ir_graph *irg, ir_node *node)
 
 static inline ir_node *_get_irg_args(const ir_graph *irg)
 {
-       return get_irn_intra_n(irg->anchor, anchor_args);
+       return get_irn_n(irg->anchor, anchor_args);
 }
 
 static inline void _set_irg_args(ir_graph *irg, ir_node *node)
@@ -219,7 +198,7 @@ static inline void _set_irg_args(ir_graph *irg, ir_node *node)
 
 static inline ir_node *_get_irg_bad(const ir_graph *irg)
 {
-       return get_irn_intra_n(irg->anchor, anchor_bad);
+       return get_irn_n(irg->anchor, anchor_bad);
 }
 
 static inline void _set_irg_bad(ir_graph *irg, ir_node *node)
@@ -229,7 +208,7 @@ static inline void _set_irg_bad(ir_graph *irg, ir_node *node)
 
 static inline ir_node * _get_irg_no_mem(const ir_graph *irg)
 {
-       return get_irn_intra_n(irg->anchor, anchor_no_mem);
+       return get_irn_n(irg->anchor, anchor_no_mem);
 }
 
 static inline void _set_irg_no_mem(ir_graph *irg, ir_node *node)
@@ -237,16 +216,6 @@ static inline void _set_irg_no_mem(ir_graph *irg, ir_node *node)
        set_irn_n(irg->anchor, anchor_no_mem, node);
 }
 
-static inline ir_node *_get_irg_current_block(const ir_graph *irg)
-{
-       return irg->current_block;
-}
-
-static inline void _set_irg_current_block(ir_graph *irg, ir_node *node)
-{
-       irg->current_block = node;
-}
-
 static inline ir_entity *_get_irg_entity(const ir_graph *irg)
 {
        assert(irg);
@@ -302,15 +271,15 @@ static inline void _set_irg_outs_inconsistent(ir_graph *irg)
                irg->outs_state = outs_inconsistent;
 }
 
-static inline irg_extblk_state _get_irg_extblk_state(const ir_graph *irg)
+static inline irg_extblk_info_state _get_irg_extblk_state(const ir_graph *irg)
 {
-  return irg->extblk_state;
+       return irg->extblk_state;
 }
 
 static inline void _set_irg_extblk_inconsistent(ir_graph *irg)
 {
-       if (irg->extblk_state == extblk_valid)
-               irg->extblk_state = extblk_invalid;
+       if (irg->extblk_state == ir_extblk_info_valid)
+               irg->extblk_state = ir_extblk_info_invalid;
 }
 
 static inline irg_dom_state _get_irg_dom_state(const ir_graph *irg)
@@ -516,7 +485,7 @@ static inline int get_irg_n_anchors(const ir_graph *irg)
  */
 static inline ir_node *get_irg_anchor(const ir_graph *irg, int idx)
 {
-       return get_irn_intra_n(irg->anchor, idx);
+       return get_irn_n(irg->anchor, idx);
 }
 
 /**
@@ -527,16 +496,32 @@ static inline void set_irg_anchor(ir_graph *irg, int idx, ir_node *irn)
        set_irn_n(irg->anchor, idx, irn);
 }
 
-#ifdef INTERPROCEDURAL_VIEW
-extern int firm_interprocedural_view;
 
-static inline int _get_interprocedural_view(void)
+
+/**
+ * Register a phase on an irg.
+ * The phase will then be managed by the irg. This means you can easily
+ * access the phase when you only have a graph handle, the memory will be
+ * freed when the graph is freed and some care is taken that the phase data
+ * will be invalidated/preserved on events like dead code elemination and
+ * code selection.
+ */
+void irg_register_phase(ir_graph *irg, ir_phase_id id, ir_phase *phase);
+
+/**
+ * Frees all phase infos attached to an irg
+ */
+void irg_invalidate_phases(ir_graph *irg);
+
+/**
+ * return phase with given id
+ */
+static inline ir_phase *irg_get_phase(const ir_graph *irg, ir_phase_id id)
 {
-       return firm_interprocedural_view;
+       assert(id <= PHASE_LAST);
+       return irg->phases[id];
 }
 
-#define get_interprocedural_view()            _get_interprocedural_view()
-#endif
 
 #define is_ir_graph(thing)                    _is_ir_graph(thing)
 #define get_irg_start_block(irg)              _get_irg_start_block(irg)
@@ -547,10 +532,6 @@ static inline int _get_interprocedural_view(void)
 #define set_irg_end_block(irg, node)          _set_irg_end_block(irg, node)
 #define get_irg_end(irg)                      _get_irg_end(irg)
 #define set_irg_end(irg, node)                _set_irg_end(irg, node)
-#define get_irg_end_reg(irg)                  _get_irg_end_reg(irg)
-#define set_irg_end_reg(irg, node)            _set_irg_end_reg(irg, node)
-#define get_irg_end_except(irg)               _get_irg_end_except(irg)
-#define set_irg_end_except(irg, node)         _set_irg_end_except(irg, node)
 #define get_irg_initial_exec(irg)             _get_irg_initial_exec(irg)
 #define set_irg_initial_exec(irg, node)       _set_irg_initial_exec(irg, node)
 #define get_irg_frame(irg)                    _get_irg_frame(irg)
@@ -565,8 +546,6 @@ static inline int _get_interprocedural_view(void)
 #define set_irg_bad(irg, node)                _set_irg_bad(irg, node)
 #define get_irg_no_mem(irg)                   _get_irg_no_mem(irg)
 #define set_irn_no_mem(irg, node)             _set_irn_no_mem(irg, node)
-#define get_irg_current_block(irg)            _get_irg_current_block(irg)
-#define set_irg_current_block(irg, node)      _set_irg_current_block(irg, node)
 #define get_irg_entity(irg)                   _get_irg_entity(irg)
 #define set_irg_entity(irg, ent)              _set_irg_entity(irg, ent)
 #define get_irg_frame_type(irg)               _get_irg_frame_type(irg)