Do not mark the transformed as visited. It makes no sense at all.
[libfirm] / ir / ir / irprog_t.h
index 4b9de62..343012f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1995-2007 University of Karlsruhe.  All right reserved.
+ * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
  *
  * This file is part of libFirm.
  *
 void  add_irp_mode(ir_mode *mode);
 
 /* INLINE functions */
+static INLINE ir_type *
+_get_segment_type(ir_segment_t segment)
+{
+       ir_type *type;
+
+       assert(segment < IR_SEGMENT_COUNT);
+       type                        = skip_tid(irp->segment_types[segment]);
+       irp->segment_types[segment] = type;
+       return type;
+}
 
 static INLINE ir_type *
 _get_glob_type(void) {
-       assert(irp);
-       return irp->glob_type = skip_tid(irp->glob_type);
+       return _get_segment_type(IR_SEGMENT_GLOBAL);
 }
 
 static INLINE ir_type *
 _get_tls_type(void) {
-       assert(irp);
-       return irp->tls_type = skip_tid(irp->tls_type);
+       return _get_segment_type(IR_SEGMENT_THREAD_LOCAL);
 }
 
 static INLINE int
@@ -120,6 +128,12 @@ get_irp_new_node_nr(void) {
 }
 #endif /* DEBUG_libfirm */
 
+static INLINE int
+get_irp_new_irg_idx(void) {
+       assert(irp);
+       return irp->max_irg_idx++;
+}
+
 static INLINE ir_graph *
 _get_const_code_irg(void) {
        return irp->const_code_irg;
@@ -132,6 +146,13 @@ _get_irp_next_region_nr(void) {
        return ++irp->last_region_nr;
 }
 
+/** Returns a new, unique label number. */
+static INLINE ir_label_t
+_get_irp_next_label_nr(void) {
+       assert(irp);
+       return ++irp->last_label_nr;
+}
+
 void           set_irp_ip_outedges(ir_node ** ip_outedges);
 ir_node**      get_irp_ip_outedges(void);
 
@@ -151,8 +172,10 @@ void init_irprog_2(void);
 #define get_irp_n_opcodes()       _get_irp_n_opcodes()
 #define get_irp_opcode(pos)       _get_irp_opcode(pos)
 #define get_const_code_irg()      _get_const_code_irg()
+#define get_segment_type(s)       _get_segment_type(s)
 #define get_glob_type()           _get_glob_type()
 #define get_tls_type()            _get_tls_type()
 #define get_irp_next_region_nr()  _get_irp_next_region_nr()
+#define get_irp_next_label_nr()   _get_irp_next_label_nr()
 
 #endif