implemented loop unrolling optimization
authorBeyhan <beyhan@ipd.info.uni-karlsruhe.de>
Fri, 28 Jan 2005 16:26:32 +0000 (16:26 +0000)
committerBeyhan <beyhan@ipd.info.uni-karlsruhe.de>
Fri, 28 Jan 2005 16:26:32 +0000 (16:26 +0000)
[r4989]

38 files changed:
ir/ana/irscc.c
ir/ir/irgopt.c
ir/ir/irgopt_t.h
ir/opt/loop_unrolling.c
ir/opt/strength_red.c
ir/opt/strength_red.h
testprograms/Makefile.in
testprograms/loop_unroll_example.c [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m1-loop-unrolling.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m1-looptree.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m1-pure.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m1.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m2-loop-unrolling.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m2-looptree.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m2-pure.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m2.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m3-loop-unrolling.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m3-looptree.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m3-pure.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m3.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m4-loop-unrolling.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m4-looptree.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m4-pure.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m4.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m5-loop-unrolling.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m5-looptree.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m5-pure.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m5.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m6-loop-unrolling.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m6-looptree.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m6-pure.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m6.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m7-loop-unrolling.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m7-looptree.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m7-pure.vcg [new file with mode: 0644]
testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m7.vcg [new file with mode: 0644]
testprograms/ref-results/run-result.txt
testprograms/strength_red_example.c

index 9838275..b33af42 100644 (file)
@@ -1454,7 +1454,7 @@ int is_loop_variant(ir_loop *l, ir_loop *b) {
  *               start off with a block loop to find all proper uses.
  *
  * Returns true, if the node n is not changed in the loop block
- * belongs to or in inner loops of this block. */
+ * belongs to or in inner loops of this blocks loop. */
 int is_loop_invariant(ir_node *n, ir_node *block) {
   ir_loop *l = get_irn_loop(block);
   ir_node *b = (is_Block(n)) ? n : get_nodes_block(n);
index 315da6b..6f18036 100644 (file)
@@ -266,7 +266,7 @@ firm_copy_node (ir_node *n, void *env) {
  * Copies new predecessors of old node to new node remembered in link.
  * Spare the Bad predecessors of Phi and Block nodes.
  */
-static void
+void
 copy_preds (ir_node *n, void *env) {
   ir_node *nn, *block;
   int i, j, irn_arity;
index e2446f9..82e286c 100644 (file)
@@ -5,6 +5,8 @@
 #ifndef _IRGOPT_T_H
 #define _IRGOPT_T_H
 
+//void copy_node (ir_node *n, void *env);
+void copy_preds(ir_node *n, void *env);
 void firm_copy_node (ir_node *n, void *env);
 
 #endif
index 459b1c2..e08c896 100644 (file)
 # include "loop_unrolling.h"
 
 # include "irgwalk.h"
-# include "irnode_t.h"
+# include "ircons.h"
+# include "irgmod.h"
 # include "irloop_t.h"
+# include "irgopt_t.h"
+# include "irnode_t.h"
+# include "irouts.h"
+# include "hashptr.h"
+# include "pset.h"
+# include "strength_red.h"
 
-static void do_loop_unroll(ir_node *n, void *env){
+#define MAX_UNROLL 4
+
+/*We will know if the head of the loop to be copy.
+ * Default don't copy.*/
+static int copy_loop_head = 0;
+
+typedef struct {
+  ir_node *irn ;                /* Node of the loop to be unrolling*/
+  ir_node *copy[MAX_UNROLL] ;   /* The copy of the node */
+} copies_t;
+
+/**
+ * compare two elements of the copies_t set
+ */
+static int set_cmp(const void *elt, const void *key, size_t size)
+{
+  const copies_t *c1 = elt;
+  const copies_t *c2 = key;
+
+  return c1->irn != c2->irn;
+}
+
+static INLINE int * new_backedge_arr(struct obstack *obst, int size)
+{
+  int *res = NEW_ARR_D (int, obst, size);
+  memset(res, 0, sizeof(int) * size);
+  return res;
+}
+
+static INLINE void new_backedge_info(ir_node *n) {
+  switch(get_irn_opcode(n)) {
+  case iro_Block:
+    n->attr.block.cg_backedge = NULL;
+    n->attr.block.backedge = new_backedge_arr(current_ir_graph->obst, get_irn_arity(n));
+    break;
+  case iro_Phi:
+    n->attr.phi_backedge = new_backedge_arr(current_ir_graph->obst, get_irn_arity(n));
+    break;
+  case iro_Filter:
+    n->attr.filter.backedge = new_backedge_arr(current_ir_graph->obst, get_irn_arity(n));
+    break;
+  default: ;
+  }
+}
+
+/**
+ * Remember the new node in the old node by using a field all nodes have.
+ */
+
+static INLINE void
+set_new_node (ir_node *old, ir_node *new)
+{
+  old->link = new;
+}
+
+/**
+ * Copies the node to the new obstack. The Ins of the new node point to
+ * the predecessors on the old obstack.  For block/phi nodes not all
+ * predecessors might be copied.  n->link points to the new node.
+ * For Phi and Block nodes the function allocates in-arrays with an arity
+ * only for useful predecessors.  The arity is determined by counting
+ * the non-bad predecessors of the block.
+ *
+ * @param n    The node to be copied
+ * @param env  if non-NULL, the node number attribute will be copied to the new node
+ */
+
+static void
+copy_node (ir_node *n, void *env)
+{
+  ir_node *nn, *block;
+  int new_arity;
+  opcode op = get_irn_opcode(n);
+  int copy_node_nr = env != NULL;
+
+  /* The end node looses it's flexible in array.  This doesn't matter,
+     as dead node elimination builds End by hand, inlineing doesn't use
+     the End node. */
+  /* assert(n->op == op_End ||  ((_ARR_DESCR(n->in))->cookie != ARR_F_MAGIC)); */
+
+  if (op == iro_Bad)
+    /* node copied already */
+    return;
+
+  new_arity = get_irn_arity(n);
+
+  nn = new_ir_node(get_irn_dbg_info(n),
+           current_ir_graph,
+           block,
+           get_irn_op(n),
+           get_irn_mode(n),
+           new_arity,
+           get_irn_in(n));
+
+
+  /* Copy the attributes.  These might point to additional data.  If this
+     was allocated on the old obstack the pointers now are dangling.  This
+     frees e.g. the memory of the graph_arr allocated in new_immBlock. */
+  copy_node_attr(n, nn);
+  new_backedge_info(nn);
+  set_new_node(n, nn);
+
+#if DEBUG_libfirm
+  if (copy_node_nr) {
+    /* for easier debugging, we want to copy the node numbers too */
+    nn->node_nr = n->node_nr;
+  }
+#endif
+
+}
+
+static int is_Phi_in_loop_head(ir_node *phi, ir_node *loop_head) {
+  assert(is_Block(loop_head));
+  return is_Phi(phi) && (get_nodes_block(phi) == loop_head);
+}
+
+/**
+ * Copies predecessors of node to copies of node.
+ * If the predecessor is a loop invariant, then the copy get it
+ * as predecessor, else the copy of the predecessor.
+ *
+ * @param *l_n                A set, where the node of the loop are saved.
+ * @param *value              A element of the set.
+ * @param *info               Contains information about the induction variable.
+ * @param *unroll_factor      A integer power of 2.
+ * @param *env                Free environment pointer.
+ */
+static void
+set_preds (set *l_n, copies_t *value, induct_var_info *info, int unroll_factor, void *env)
+{
+  int i, irn_arity;
+  copies_t *value_pred;
+
+  ir_node *loop_head = get_loop_node(info->l_itervar_phi, 0);
+
+  irn_arity = get_irn_arity(value->irn);
+
+  for (i = 0; i < irn_arity; i++) {
+    ir_node *pred = get_irn_n(value->irn, i);
+
+    copies_t key;
+
+    key.irn = pred;
+    value_pred = set_find(l_n, &key, sizeof(key), HASH_PTR(pred));
+
+    if (value->irn != loop_head && !is_Phi_in_loop_head(value->irn, loop_head)) {
+      if (value_pred == NULL) {
+         /* Is loop invariant. */
+       for(int p = 0; p < unroll_factor -1; p++)
+         set_irn_n (value->copy[p], i, pred);
+
+      } else
+       for(int p = 0; p < unroll_factor -1; p++)
+         set_irn_n (value->copy[p], i, value_pred->copy[p]);
+    }
+  }
+}
+
+/* Set the backedge of phi in the loop head.The backedge of phis in the loop head
+ * must now point to the value defined
+ * in the last copie of the loop body.
+ *
+ * @param *l_n                A set, where the node of the loop are saved.
+ * @param *value              A phi in the loop head.
+ * @param *info               Contains information about the induction variable.
+ * @param *unroll_factor      A integer power of 2.
+ */
+static void
+set_phi_backedge(set *l_n, copies_t *value, induct_var_info *info, int unroll_factor)
+{
+  copies_t key, *value_pred;
+  key.irn = get_irn_n(value->irn, info->op_pred_pos);
+  value_pred = set_find(l_n, &key, sizeof(key), HASH_PTR(key.irn));
+
+  set_Phi_pred(value->irn, info->op_pred_pos, value_pred->copy[unroll_factor - 2]);
+}
+
+/** Test for a loop head.
+ *
+ *  Returns true if the node has predecessors in the loop _and_ out of
+ *  the loop.  Then it is a loop head: The loop can be entered through
+ *  this node.
+ *
+ *  @param *n      The node to be tested.
+ *  @param *info   Contains the loop information.
+ */
+static int
+is_loop_head(ir_node *n, induct_var_info *info)
+{
+  int i, arity;
+  int some_outof_loop = 0, some_in_loop = 0;
+
+  assert(get_irn_op(n) == op_Block);
+  arity = get_Block_n_cfgpreds(n);
+
+  for (i = 0; i < arity; i++) {
+    ir_node *pred = get_Block_cfgpred(n, i);
+    assert(pred);
+    if (is_loop_invariant(pred, get_loop_node(info->l_itervar_phi, 0))) {
+      some_outof_loop = 1;
+    } else
+      some_in_loop = 1;
+  }
+
+  return some_outof_loop && some_in_loop;
+}
+
+
+/** Test wether the passed loop is a natural loop.
+ *
+ * Returns true if the loop has only one loop header and only a single
+ * back edge.
+ *
+ * @param *info  Contains the loop information.
+ */
+static int
+is_natural_loop ( induct_var_info *info)
+{
+  ir_node *l_node;
+  int l_n_node = 0;
+  l_n_node = get_loop_n_nodes (info->l_itervar_phi);
+
+  for (int i = 1; i < (l_n_node); i ++) {
+    l_node = get_loop_node (info->l_itervar_phi, i);
+    if (is_loop_head(l_node, info)) return 0;
+
+    if (has_backedges(l_node) && i != l_n_node-1) return 0;
+  }
+
+  return 1;
+}
+
+/** Serch for all nodes of a loop.
+ *
+ * @param  *node       The induction variable of the loop.
+ * @param  *loop_head  The head of the loop.
+ * @param  *l_n        A set, where the node of the loop are saved.
+ */
+static void
+find_loop_nodes(ir_node *node, ir_node *loop_head, set *l_n)
+{
+  copies_t key, *value;
+
+  /* Add this node to the list. */
+  key.irn  = node;
+  for(int i = 0; i < 4 ;i++)
+    key.copy[i] = NULL;
+  value = set_insert(l_n, &key, sizeof(key), HASH_PTR(key.irn));
+
+  /* Add all outs of this node to the list, if they are within the loop. */
+  for (int i = get_irn_n_outs(node) - 1; i >= 0; i--) {
+    ir_node *pred = get_irn_out(node, i);
+    key.irn = pred;
+    if (!is_loop_invariant(pred, loop_head)         &&
+       set_find( l_n, &key, sizeof(key), HASH_PTR(key.irn)) == NULL ) {
+      find_loop_nodes(pred, loop_head, l_n);
+    }
+  }
+
+  /* Add all ins if they are within the loop. */
+  for(int i = get_irn_arity(node) -1; i >=0; i--) {
+    ir_node *pred = get_irn_n(node, i);
+    key.irn = pred;
+    if (!is_loop_invariant(pred, loop_head)         &&
+       set_find( l_n, &key, sizeof(key), HASH_PTR(key.irn)) == NULL ){
+      find_loop_nodes(pred, loop_head, l_n);
+    }
+  }
+}
+
+/* Make a new loop head if copy_loop_head = 1.
+ *
+ * @param *l_n              A set, where the node of the loop are saved.
+ * @param *info             Contains the loop information.
+ * @param *value            A element of the set.
+ * @param *unroll_factor    A integer power of 2.
+ *
+ */
+static void
+new_loop_head (set *l_n, induct_var_info *info, copies_t *value, int unroll_factor)
+{
+  copies_t block, *value_backedge_jmp, *backedge_jmp_block;
+
+  ir_node *backedge_jmp = get_Block_cfgpred(value->irn, info->op_pred_pos);
+  block.irn = backedge_jmp;
+
+  value_backedge_jmp = set_find( l_n, &block, sizeof(block), HASH_PTR(block.irn));
+  if(copy_loop_head){
+    ir_node *new_loop_head = new_Block(1, &backedge_jmp);
+    value->copy[0] = new_loop_head;
+
+    for(int i = 1; i<unroll_factor - 1; i++){
+      ir_node *new_loop_head1 = new_Block(1, &value_backedge_jmp->copy[i-1]);
+      value->copy[i] = new_loop_head1;
+    }
+  }else{
+
+    block.irn = get_nodes_block(backedge_jmp);
+    backedge_jmp_block =  set_find( l_n, &block, sizeof(block), HASH_PTR(block.irn));
+
+    set_irn_n(backedge_jmp_block->copy[0], 0, value_backedge_jmp->irn) ;
+
+    for(int i = 1; i<unroll_factor - 1; i++)
+      set_irn_n(backedge_jmp_block->copy[i], 0, value_backedge_jmp->copy[i - 1]);
+  }
+
+}
+
+/* Set all copies of the induction variable.
+ *
+ * @param *phi             A phi node in the loop head block.
+ * @param *phi_pred        The predecessor of the phi along the backedge.
+ * @param *unroll_factor   A integer power of 2.
+ *
+ */
+static void
+set_Phi_copies(copies_t *phi, copies_t *phi_pred, int unroll_factor)
+{
+  phi->copy[0] = phi_pred->irn;
+  for(int p = 1; p < unroll_factor -1; p++)
+    phi->copy[p] =  phi_pred->copy[p -1];
+}
+
+/* Decide if the loop head to be copy. A head with important nodes
+ * mus be copy.
+ *
+ * @param *l_n                A set, where the node of the loop are saved.
+ * @param *info               Contains information about the induction variable.
+ */
+static void
+loop_head_nodes(set *l_n, induct_var_info *info)
+{
+  copies_t *value;
+  ir_node *loop_head = get_loop_node(info->l_itervar_phi, 0);
+
+  for (value = set_first(l_n); value != NULL; value = set_next(l_n))
+    if(value->irn->op != op_Block &&
+       get_nodes_block(value->irn) == loop_head)
+      switch(get_irn_opcode(value->irn)) {
+      case iro_Cond:
+       break;
+      case iro_Phi:
+       break;
+      case iro_Proj:
+       break;
+      case iro_Const:
+       break;
+      case iro_Cmp:
+       break;
+      default:
+       copy_loop_head = 1;
+      }
+}
+
+/** Copy all loop nodes.
+ *
+ * @param *l_n    Contains all nodes of the loop.
+ * @param *info   Contains the loop information.
+ * @param *unroll_factor   A integer power of 2.
+ */
+static void
+copy_loop_body(set *l_n, induct_var_info *info, int unroll_factor)
+{
+  copies_t *value, *info_op, *phi, *loop_h, key, *value1;
+
+  ir_node *loop_head = get_loop_node(info->l_itervar_phi, 0);
+
+
+  for (value = set_first(l_n); value != NULL; value = set_next(l_n)) {
+    if(value->irn == loop_head)
+      loop_h = value;
+    else if (is_Phi_in_loop_head(value->irn, loop_head))
+      phi = value;
+    else if(copy_loop_head){
+      for (int i = 0; i<unroll_factor -1; i++){
+       copy_node(value->irn, NULL);
+       value->copy[i] = get_irn_link(value->irn);
+      }
+    } else {
+      if((value->irn->op == op_Block            &&
+         value->irn != loop_head)              ||
+        (value->irn->op != op_Block             &&
+         get_nodes_block(value->irn) != loop_head))
+       for (int i = 0; i<unroll_factor -1; i++){
+         copy_node(value->irn, NULL);
+         value->copy[i] = get_irn_link(value->irn);
+       }
+    }
+  }
+  /* Treat the loop head block */
+  new_loop_head (l_n, info, loop_h, unroll_factor);
+
+  /* Similarily treat the Phis in the loop head block. */
+  key.irn = info->op;
+  info_op = set_find( l_n, &key, sizeof(key), HASH_PTR(key.irn));
+  assert(info_op->irn == get_Phi_pred(info->itervar_phi, info->op_pred_pos));
+  for (int i = 0; i < get_irn_n_outs(loop_head); ++i) {
+    ir_node *phi = get_irn_out(loop_head, i);
+
+    if (is_Phi(phi)) {
+      key.irn = get_Phi_pred(phi, info->op_pred_pos); // info->op;
+      copies_t *phi_pred = set_find(l_n, &key, sizeof(key), HASH_PTR(key.irn));
+      key.irn = phi;
+      copies_t *phi_op = set_find(l_n, &key, sizeof(key), HASH_PTR(key.irn));
+      set_Phi_copies(phi_op, phi_pred, unroll_factor);
+    }
+  }
+
+
+  for (value = set_first(l_n); value != NULL; value = set_next(l_n)) {
+
+    if(copy_loop_head)
+      set_preds(l_n, value, info, unroll_factor, NULL);
+    else if((value->irn->op != op_Block) && get_nodes_block(value->irn) != loop_head)
+      set_preds(l_n, value, info, unroll_factor, NULL);
+
+    if (is_Phi_in_loop_head(value->irn, loop_head))
+      set_phi_backedge(l_n, value, info, unroll_factor);
+
+    if ((value->irn->op != op_Block) && !is_Phi_in_loop_head(value->irn, loop_head)) {
+      ir_node *nodes_block = get_nodes_block(value->irn);
+
+      if(!copy_loop_head && nodes_block == loop_head)
+       continue;
+
+      key.irn = nodes_block;
+      value1 = set_find( l_n, &key, sizeof(key), HASH_PTR(key.irn));
+
+      for(int p = 0; p < unroll_factor - 1; p++){
+       set_nodes_block(value->copy[p], value1->copy[p]);
+       //add_End_keepalive(get_irg_end(current_ir_graph), value->copy[p]);
+      }
+    }
+  }
+}
+
+static void
+set_loop_outs(set *l_n, induct_var_info *info, int unroll_factor)
+{
+  copies_t *value, key;
+  ir_node *loop_head = get_loop_node(info->l_itervar_phi, 0);
+
+  value = set_first(l_n);
+  for( ; value != NULL; value = set_next(l_n))
+    if(value->irn != info->op && !is_Phi_in_loop_head(value->irn, loop_head) &&
+       get_irn_opcode(value->irn) != iro_Proj)
+    for(int i = 0; i < get_irn_n_outs(value->irn); i++){
+      key.irn = get_irn_out(value->irn, i);
+       if(set_find( l_n, &key, sizeof(key), HASH_PTR(key.irn)) == NULL)
+         for(int p = 0; p < get_irn_arity(key.irn); p++)
+           if(value->irn == get_irn_n(key.irn, p))
+             set_irn_n (key.irn, p, value->copy[unroll_factor-2]);
+    }
 }
 
 
+/** Unroll the loop boby with a factor that must be power of two.
+ *
+ *  @param *n        A ir node.
+ *  @param *env      Free environment pointer.
+ */
+static void do_loop_unroll(ir_node *n, void *env){
+
+  induct_var_info info;
+  info.itervar_phi = n;
+  int l_sons = 0, unroll_factor = 0;
+
+  /* The ir node must be a induction varible. */
+
+  if (get_irn_op (n) == op_Phi) {
+    if (is_induction_variable (&info) == NULL) return;
+  } else return;
+
+  /* Brute force limiting of loop body size. */
+  if (get_loop_n_nodes(info.l_itervar_phi) > 2 ) return;
+
+  /* Only unroll loops that compare against a constant for exiting. */
+  if (info.cmp == NULL) return;
+
+  /* We only want to unroll innermost loops. */
+  l_sons = get_loop_n_sons (info.l_itervar_phi);
+  if ( l_sons != 0)
+    return;
+
+  ir_node* cmp_out = get_irn_out(info.cmp, 0);
+
+  if(!is_Proj(cmp_out)) return;
+  if(get_irn_op(info.increment) != op_Const) return;
+
+  int cmp_typ =  get_Proj_proj(cmp_out);
+  int init = get_tarval_long(get_Const_tarval
+                             (get_Phi_pred(info.itervar_phi, info.init_pred_pos)));
+  int iter_end = get_tarval_long(get_Const_tarval(info.cmp_const));
+  int iter_increment = get_tarval_long(get_Const_tarval(info.increment));
+  int diff, iter_number;
+
+  if(iter_end < init){
+    int p = iter_end;
+    iter_end = init;
+    init = p;
+  }
 
+  iter_increment = iter_increment < 0 ? -iter_increment : iter_increment;
+  diff = iter_end - init;
 
+  if (diff == 0 || iter_increment == 0) return;
 
+  iter_number = diff/iter_increment;
+  if((cmp_typ == 3 || cmp_typ == 5) && (iter_end % iter_increment == 0))
+    iter_number ++;
 
+  if(iter_number % 4 == 0)
+    unroll_factor = 4;
+  else if(iter_number % 3 == 0)
+    unroll_factor = 3;
+  else if(iter_number % 2 == 0)
+    unroll_factor = 2;
+  else return;
+
+
+  printf("\ninit %d,\n iter_end %d, \n diff %d, cmp_typ\n %d, \n unroll_factor %d", init, iter_end, diff, cmp_typ, unroll_factor);
+
+  // int unroll_factor = 4;  /* Must be power of 2. */
+  assert(unroll_factor <= MAX_UNROLL);
+
+  ir_node *loop_head;
+
+  loop_head = (is_natural_loop(&info)) ? get_loop_node(info.l_itervar_phi, 0) : NULL;
+
+  assert(loop_head != NULL && is_Block(loop_head));
+
+ /* We assume, the loop head has exactly one backedge.  The position of
+    the backedge is in the following variable: */
+  int backedge_pos ;
+  backedge_pos = (is_backedge(loop_head, 0)) ? 0:1;
+
+  /* A set with the nodes to copy. */
+  set *loop_nodes;
+  loop_nodes = new_set(set_cmp, 8);
+
+  ir_node *backedge_jmp = get_Block_cfgpred(loop_head, backedge_pos);
+
+  find_loop_nodes(info.itervar_phi, get_loop_node(info.l_itervar_phi, 0), loop_nodes);
+  loop_head_nodes(loop_nodes, &info);
+  copy_loop_body(loop_nodes, &info, unroll_factor);
+
+  copies_t *value;
+  for (value = set_first(loop_nodes); value != NULL; value = set_next(loop_nodes)) {
+    if(value->irn == backedge_jmp)
+      set_Block_cfgpred(loop_head, backedge_pos, value->copy[unroll_factor-2]);
+  }
+
+  set_loop_outs(loop_nodes, &info, unroll_factor);
+
+  /*
+  if (needs_preloop(unroll_factor)) {
+    return;    for now ...
+    make_preloop(unroll_factor);
+  }
+*/
+
+
+  // adapt_result_usage();
+
+}
 
 /* Performs loop unrolling for the passed graph. */
-void optimize_loop_unrolling(ir_graph *irg) {
+void optimize_loop_unrolling(ir_graph *irg /* unroll factor, max body size */) {
+  ir_graph *rem = current_ir_graph;
+  current_ir_graph = irg;
+
+  if ( !get_opt_loop_unrolling()) return;
 
-  if (!get_optimize() || !get_opt_loop_unrolling()) return;
+  /* -- Precompute some information -- */
+  /* Call algorithm that computes the backedges */
+  construct_cf_backedges(irg);
+ /* Call algorithm that computes the dominator trees. */
+  compute_doms(irg);
+  /* Call algorithm that computes the out edges */
+  compute_outs(irg);
+  collect_phiprojs(irg);
 
   /* -- Search expressions that can be optimized -- */
   irg_walk_graph(irg, NULL, do_loop_unroll, NULL);
 
+  current_ir_graph = rem;
 }
index fbe47c7..e27927b 100644 (file)
@@ -45,29 +45,6 @@ reduce_itervar(induct_var_info *iv)
 # include "firmstat.h"
 
 
-/* The information needed for an induction variable */
-typedef struct _induct_var_info {
-  ir_op   *operation_code;              /**< the opcode of the induction variable, either op_Add or op_Sub */
-  ir_node *increment;                   /**< the increment/decrement expression of the induction vriable */
-  ir_node *init;                        /**< the init expression */
-  ir_node *op;                          /**< the modify expression of the induction variable, ie the Add/Sub */
-  ir_node *itervar_phi;                 /**< the Phi operation of the induction variable */
-  ir_node *c, *new_phi, *new_increment, *new_init;
-  ir_node *new_op, *new_add, *reducible_node;
-  ir_node *old_ind, *symconst, *new_cmp;
-  ir_node *cmp_const;                   /**< the (loop invariant) expression that compared with the induction variable */
-  ir_node *cmp_init_block;
-  ir_node *cmp;                         /**< if set, the cmp at the end of the loop using the induction variable */
-  ir_loop *l_itervar_phi;               /**< the loop of the induction variable */
-  int      strong_reduced;
-  int      init_pred_pos;               /**< the position of the init expression in the inductions Phi */
-  int      op_pred_pos;                 /**< the position of the induction operation in the inductions Phi */
-  int      out_loop_res;
-  int      phi_pred;                    /**< number of users of the induction variable's phi */
-  int      reducible;                   /**< set if reducible */
-} induct_var_info;
-
-
 /** Counter for verbose information about optimization. */
 static int n_reduced_expressions;
 static int n_made_new_phis;
@@ -90,9 +67,10 @@ static int n_made_new_phis;
  * op or loop invariant.
  *
  * @param n     A phi node.
- * @param info  After call contains the induction variable information
+ * @param info  After call contains the induction variable information.
  */
-static induct_var_info *is_induction_variable (induct_var_info *info) {
+
+induct_var_info *is_induction_variable (induct_var_info *info) {
 
   int i;
   int op_pred, Store_in_op, Store_in_phi, cmp_in_phi;
index 0c493b2..481b7e2 100644 (file)
 # ifndef _STRENGTH_RED_H_
 # define _STRENGTH_RED_H_
 
-# include "irgraph.h"
+#include "irnode.h"
+#include "irgraph.h"
+#include "irloop.h"
 
 /** Performs strength reduction for the passed graph. */
 void reduce_strength(ir_graph *irg);
 
+/* The information needed for an induction variable */
+# ifndef _STRENGTH_RED_TYP_
+# define _STRENGTH_RED_TYP_
+typedef struct _induct_var_info {
+  ir_op   *operation_code;
+  ir_node *increment, *init, *op, *itervar_phi, *c, *new_phi, *new_increment, *new_init;
+  ir_node *new_op, *new_add, *reducible_node;
+  ir_node *old_ind, *symconst, *new_cmp, *cmp_const, *cmp_init_block, *cmp;
+  int      be_pos, strong_reduced;
+  int      init_pred_pos, op_pred_pos, out_loop_res, phi_pred, reducible;
+  ir_loop *l_itervar_phi;
+}induct_var_info;
+#endif
 
+/** If an ir_node is induction variable return info else return NULL. */
+induct_var_info *is_induction_variable ( induct_var_info *info);
 
 #endif /* _STRENGTH_RED_H_ */
index da12382..bf402a2 100644 (file)
@@ -43,6 +43,7 @@ SOURCES := Makefile.in                \
        oo_program_example.c            \
        recursions.c                    \
        strength_red_example.c          \
+       loop_unroll_example.c           \
        three_cfpred_example.c          \
        while_example.c
 
diff --git a/testprograms/loop_unroll_example.c b/testprograms/loop_unroll_example.c
new file mode 100644 (file)
index 0000000..a66dea6
--- /dev/null
@@ -0,0 +1,470 @@
+
+/*
+ * Project:     libFIRM
+ * File name:   testprograms/loop_unroll_exapmle.c
+ * Purpose:     Shows how loopunrolling works
+ * Author:      Beyhan Veliev
+ * Modified by:
+ * Created:
+ * CVS-ID:      $Id$
+ *
+ * Copyright:   (c) 2004 Universität Karlsruhe
+ * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
+ */
+
+# include <stdio.h>
+# include <string.h>
+# include <reassoc.h>
+# include "firm.h"
+
+# include "irvrfy.h"
+# include "irdump.h"
+
+#include "loop_unrolling.h"
+
+
+#define new_Const_int(n)        new_Const(mode_Is, new_tarval_from_long(n, mode_Is))
+
+
+#define CLASSNAME "LOOP_UNROLL_EXAMPLE"
+#define METHODNAME1 "LOOP_UNROLL_EXAMPLE_m1"
+#define METHODNAME2 "LOOP_UNROLL_EXAMPLE_m2"
+#define METHODNAME3 "LOOP_UNROLL_EXAMPLE_m3"
+#define METHODNAME4 "LOOP_UNROLL_EXAMPLE_m4"
+#define METHODNAME5 "LOOP_UNROLL_EXAMPLE_m5"
+#define METHODNAME6 "LOOP_UNROLL_EXAMPLE_m6"
+#define METHODNAME7 "LOOP_UNROLL_EXAMPLE_m7"
+#define METHODNAME8 "LOOP_UNROLL_EXAMPLE_m8"
+#define METHODNAME9 "LOOP_UNROLL_EXAMPLE_m9"
+#define METHODTPNAME "LOOP_UNROLL_EXAMPLE_meth_tp"
+#define NRARGS 1
+#define NRES 1
+#define L_BOUND 0
+#define U_BOUND 10
+#define N_DIMS 1
+  /** The type int.   **/
+#define PRIM_NAME "int"
+
+
+
+static int i_pos = 0;
+static int arr_pos = 1;
+static type *typ, *typ2;
+
+static ir_node *r1, *f, *r, *c2;
+
+typedef enum {
+  loop_forward,
+  loop_backward,
+} loop_dir_t;
+
+/**
+ * Constructs a new (method-)function of the form
+ *
+ * typ fct_name(typ arg) {
+ *   for (i = start_value; i < end_value;) { ... }
+ * }
+ *
+ * After return, the loop body is the current block.
+ *
+ * @param owner        owner-type of this (method-)function
+ * @param mtp          the method type of this function
+ * @param fct_name     the name of the function
+ * @param loop_dir     the loop direction
+ */
+static void function_begin(type *owner, type *mtp, char *fct_name, loop_dir_t loop_dir) {
+  symconst_symbol sym;
+  ir_node *x, *t, *cmp;
+
+  int start_value, end_value;
+  pnc_number cmp_dir;
+
+  if (loop_dir == loop_forward) {
+    start_value = 0;
+    end_value   = 11;
+    cmp_dir     = Ge;
+  }
+  else {
+    start_value = 10;
+    end_value   = 0;
+    cmp_dir     = Lt;
+  }
+
+  /* The entity for the procedure */
+  entity *ent = new_entity (owner,  new_id_from_str(fct_name), mtp);
+
+  /* make type infromation for the array */
+  type *array_type = new_type_array(new_id_from_str("array"), N_DIMS, typ);
+
+  /* set the bounds for the array */
+  set_array_bounds_int(array_type, 0, L_BOUND, U_BOUND);
+
+  /* The array is an entity of the owner type */
+  entity *array_ent = new_entity(owner, new_id_from_str("a"), array_type);
+
+  /** The code of the procedure **/
+
+  /* Generates start and end blocks and nodes, and a first, initial block */
+#define NRLOCS 2
+  new_ir_graph(ent, NRLOCS);
+
+  /* The value position used for: */
+  i_pos = 0;
+  if (fct_name == METHODNAME7)
+    c2 = new_Const_int(5);
+
+  /* Generate the constant and assign it to b. The assignment is resolved to a
+     dataflow edge. */
+  set_value(i_pos, new_Const_int(start_value));
+
+  sym.entity_p = array_ent;
+  set_value(arr_pos, new_SymConst(sym, symconst_addr_ent));
+  x = new_Jmp();
+
+  /* We know all predecessors of the block and all set_values and set_stores are
+     preformed.   We can mature the block.  */
+  mature_immBlock(get_irg_current_block(current_ir_graph));
+
+  /* Generate a conditional branch */
+  r1 = new_immBlock();
+  add_immBlock_pred(get_irg_current_block(current_ir_graph), x);
+
+  cmp = new_Cmp(new_Const_int(end_value), get_value(i_pos, mode_Is));
+  x = new_Cond(new_Proj(cmp, mode_b, cmp_dir));
+
+  f = new_Proj(x, mode_X, 0);
+  t = new_Proj(x, mode_X, 1);
+
+  /* generate and fill the loop body block */
+  r = new_immBlock();
+  add_immBlock_pred(r, t);
+}
+
+int x;
+
+/**
+ * finishes a builded function.
+ *
+ * @param b   the return value
+ */
+static void function_end(ir_node *b) {
+  ir_node *x = new_Jmp();
+  mature_immBlock (r);
+  add_immBlock_pred(r1, x);
+
+
+  new_immBlock();
+  add_immBlock_pred(get_cur_block(), f);
+  mature_immBlock (get_cur_block());
+  /* The Return statement */
+  {
+    ir_node *in[1], *store ;
+    in[0] = b;
+    store = get_store();
+
+     x = new_Return(store, 1, in);
+  }
+  add_immBlock_pred(get_irg_end_block(current_ir_graph), x);
+
+  mature_immBlock(r1);
+  /* finalize the end block generated in new_ir_graph() */
+  mature_immBlock(get_irg_end_block(current_ir_graph));
+}
+
+int
+main(void)
+{
+  ir_graph *irg;
+  type *owner;
+  entity *ent, *array_ent, *array_ent2;
+  type *proc_tp, *array_type, *array_type2; /* type information for the method main */
+  ir_node *x,*x1 ,  *r, *t, *f, *f1, *t1, *cmp, *r1, *r2;
+  int i_pos;
+
+  printf("\nCreating an IR graph: IF_EXAMPLE...\n");
+
+  init_firm (NULL);
+
+  arch_dep_set_opts(arch_dep_none);
+
+  do_node_verification(NODE_VERIFICATION_REPORT);
+
+  typ = new_type_primitive(new_id_from_chars(PRIM_NAME, strlen(PRIM_NAME)), mode_Is);
+
+  typ2 = new_type_primitive(new_id_from_chars(PRIM_NAME, strlen(PRIM_NAME)), mode_Is);
+
+  /** The global array variable a **/
+
+
+  /** Type information for the procedure **/
+  owner = get_glob_type();
+  /* Type information for the procedure */
+  proc_tp = new_type_method(new_id_from_chars(METHODTPNAME, strlen(METHODTPNAME)), NRARGS, NRES);
+  set_method_param_type(proc_tp, 0, typ);
+  set_method_res_type(proc_tp, 0, typ);
+
+
+  /* --------------------------------------------------------------------- */
+
+  /* The entity for the procedure */
+  ent = new_entity (owner,
+                    new_id_from_str (METHODNAME1),
+                    proc_tp);
+  /* The parameter and result types of the procedure. */
+
+  /* make type infromation for the array */
+  array_type = new_type_array(new_id_from_chars("array", 5),N_DIMS, typ);
+  array_type2 = new_type_array(new_id_from_chars("array2", 6),N_DIMS, typ2);
+  /* set the bounds for the array */
+  set_array_bounds_int(array_type,  0, L_BOUND, U_BOUND);
+  set_array_bounds_int(array_type2, 0, L_BOUND, U_BOUND);
+
+  /* The array is an entity of the global typ */
+  array_ent  = new_entity( owner, new_id_from_str("a"), array_type);
+  array_ent2 = new_entity( owner, new_id_from_str("a2"), array_type2);
+
+  /** The code of the procedure **/
+
+
+  /* Generates start and end blocks and nodes, and a first, initial block */
+#undef NRLOCS
+#define NRLOCS 1
+  irg = new_ir_graph(ent, NRLOCS);
+
+  /* The value position used for: */
+  i_pos = 0;
+
+  /* Generate the constant and assign it to b. The assignment is resovled to a
+     dataflow edge. */
+  set_value (i_pos, new_Const_int(0));
+  x = new_Jmp ();
+
+  /* We know all predecessors of the block and all set_values and set_stores are
+     preformed.   We can mature the block.  */
+   mature_immBlock (get_irg_current_block(irg));
+
+  /* Generate a conditional branch */
+  r1 = new_immBlock();
+  add_immBlock_pred(get_irg_current_block(irg), x);
+  cmp = new_Cmp(new_Const_int(10), get_value(i_pos, mode_Is));
+  x = new_Cond(new_Proj(cmp, mode_b, Gt));
+  f = new_Proj(x, mode_X, 0);
+  t = new_Proj(x, mode_X, 1);
+
+  /* generate and fill the then block */
+  r = new_immBlock ();
+  add_immBlock_pred (r, t);
+
+  ir_node *b, *c, *d, *res;
+  symconst_symbol sym, sym2;
+  c = new_Const_int(1);
+  b = new_Const_int(4);
+  ir_node *b2 = new_Const_int(12);
+  sym.entity_p =  array_ent ;
+  sym2.entity_p =  array_ent2 ;
+  d = new_SymConst(sym, symconst_addr_ent);
+  ir_node *d2 = new_SymConst(sym2, symconst_addr_ent);
+  res = new_Add(d, new_Mul(get_value(i_pos, mode_Is), b, mode_Is), mode_P);
+  //ir_node *res2 = new_Add(d2, get_value(i_pos, mode_Is), mode_P);
+  ir_node *res2 = new_Add(d2, new_Mul(get_value(i_pos, mode_Is), b2, mode_Is), mode_P);
+  //res2 = new_Add(res2, new_Const_int(12), mode_P);
+  set_store (new_Proj(new_Store(get_store(), res, new_Const_int(19)), mode_M, 0));
+  set_store (new_Proj(new_Store(get_store(), res2, new_Const_int(16)), mode_M, 0));
+  d = new_SymConst(sym, symconst_addr_ent);
+  res = new_Add(d, new_Mul(get_value(i_pos, mode_Is), b, mode_Is), mode_P);
+  set_store(new_Proj(new_Store(get_store(), res, new_Const_int(15)), mode_M, 0));
+
+  set_value(i_pos, new_Add(get_value(i_pos, mode_Is), c, mode_Is));
+
+  x = new_Jmp();
+  mature_immBlock(r);
+
+  add_immBlock_pred(r1, x);
+  mature_immBlock(r1);
+
+  r2 = new_immBlock();
+  ir_node *b1 = new_Const_int(45);
+  add_immBlock_pred(get_irg_current_block(irg), f);
+  cmp = new_Cmp(new_Const_int(0), b1);
+  x = new_Cond (new_Proj(cmp, mode_b, Lt));
+  f1 = new_Proj (x, mode_X, 0);
+  t1 = new_Proj (x, mode_X, 1);
+
+  ir_node *block = new_immBlock();
+  add_immBlock_pred(block, t1);
+  b1 = new_Sub (b1, get_value(i_pos, mode_Is), mode_Is);
+  res = new_Add(d, new_Mul(get_value(i_pos, mode_Is), b, mode_Is), mode_P);
+  set_store(new_Proj(new_Store(get_store(), res, new_Const_int(19)), mode_M, 0));
+  set_value(i_pos, new_Sub(get_value(i_pos, mode_Is), c, mode_Is));
+
+  x1 = new_Jmp();
+
+  mature_immBlock(block);
+
+  add_immBlock_pred(r2, x1);
+  mature_immBlock(r2);
+
+  block = new_immBlock();
+  add_immBlock_pred(block, f1);
+  mature_immBlock(block);
+  /* The Return statement */
+  {
+    ir_node *in[1], *store ;
+    in[0] = get_value(i_pos, mode_Is);
+    store = get_store();
+
+     x = new_Return(store, 1, in);
+  }
+  add_immBlock_pred(get_irg_end_block(irg), x);
+
+  /* finalize the end block generated in new_ir_graph() */
+  mature_immBlock(get_irg_end_block(irg));
+
+
+  /* -------------------------------------------------------------------------------- */
+
+  function_begin(owner, proc_tp, METHODNAME2, loop_forward);
+  ir_node *q;
+  q =  new_Const_int(15);
+  c = new_Const_int(5);
+  b = new_Const_int(4);
+
+  res = new_Add(get_value(arr_pos, mode_P), new_Mul(get_value(i_pos, mode_Is), b, mode_Is), mode_P);
+  set_store(new_Proj(new_Store (get_store(), res, q), mode_M, 0));
+
+  set_value(i_pos, new_Add(get_value(i_pos, mode_Is), c, mode_Is));
+
+  function_end(b);
+
+  /* -------------------------------------------------------------------------- */
+
+  function_begin(owner, proc_tp, METHODNAME3, loop_backward);
+
+  c = new_Const_int(1);
+  b = new_Const_int(4);
+  ir_node *b3 = new_Const_int(8);
+
+  res = new_Add(get_value(arr_pos, mode_P), new_Mul(get_value(i_pos, mode_Is), b, mode_Is), mode_P);
+  res = new_Add(b, res, mode_P);
+  res = new_Add(b3, res, mode_P);
+  ir_node *res3 = new_Add(b3, res, mode_P);
+  res = new_Add(res3, res, mode_P);
+  set_store(new_Proj(new_Store(get_store(), res, get_value(i_pos, mode_Is)), mode_M, 0));
+
+
+  set_value(i_pos, new_Sub(get_value(i_pos, mode_Is), c, mode_Is));
+
+  function_end(b);
+
+  /* -------------------------------------------------------------------------- */
+
+  function_begin(owner, proc_tp, METHODNAME4, loop_forward);
+
+  c = new_Const_int(1);
+  b = new_Const_int(4);
+  ir_node *b4 = new_Const_int(8);
+
+  set_value(i_pos, new_Add(get_value(i_pos, mode_Is), c, mode_Is));
+  ir_node *mul4 = new_Mul(get_value(i_pos, mode_Is), b4, mode_Is);
+  res = new_Add(mul4, get_value(arr_pos, mode_P), mode_P);
+  set_store (new_Proj (new_Store (get_store (), res,get_value(i_pos, mode_Is)),
+                      mode_M, 0));
+  res = new_Add(get_value(arr_pos, mode_P), new_Mul(get_value(i_pos, mode_Is), b, mode_Is), mode_P);
+  set_store(new_Proj(new_Store(get_store(), res, get_value(i_pos, mode_Is)), mode_M, 0));
+
+  function_end(b);
+
+  /* -------------------------------------------------------------------------- */
+
+  function_begin(owner, proc_tp, METHODNAME5, loop_backward);
+
+  c = new_Const_int(1);
+  b = new_Const_int(4);
+
+  set_value(i_pos, new_Sub(get_value(i_pos, mode_Is), c, mode_Is));
+
+  ir_node * res5 = new_Add (c, b, mode_Is);
+  res = new_Add(get_value(arr_pos, mode_P), new_Mul(get_value(i_pos, mode_Is), b, mode_Is), mode_P);
+  res = new_Add(res, b, mode_P);
+  res = new_Add(res, res5, mode_P);
+  set_store(new_Proj(new_Store(get_store(), res, new_Const_int(19)), mode_M, 0));
+
+  function_end(b);
+
+  /* -------------------------------------------------------------------------- */
+
+  function_begin(owner, proc_tp, METHODNAME6, loop_forward);
+
+  c = new_Const_int(1);
+  ir_node *c1 = new_Const_int(5);
+  b = new_Const_int(4);
+
+  set_value(i_pos, new_Sub(get_value(i_pos, mode_Is), c, mode_Is));
+
+  res = new_Add( get_value(arr_pos, mode_P), new_Mul(get_value(i_pos, mode_Is),
+                            b, mode_Is), mode_P);
+  res = new_Sub(c1, res, mode_P);
+  res = new_Add( b, res, mode_P);
+  res = new_Add(b, res, mode_P);
+  set_store(new_Proj(new_Store(get_store(), res, new_Const_int(19)), mode_M, 0));
+
+  function_end(b);
+
+  /* -------------------------------------------------------------------------- */
+
+  function_begin(owner, proc_tp, METHODNAME7, loop_backward);
+
+  c = new_Const_int(1);
+  b = new_Const_int(4);
+  ir_node *b7 = new_Const_int(19);
+
+  // a[i] = a[i+4]
+  res = get_value(i_pos, mode_Is);
+  res = new_Add(res, b, mode_Is);
+  res = new_Add(res, b7, mode_Is);
+  res = new_Mul(res, b, mode_Is);
+  res = new_Add(get_value(arr_pos, mode_P), res, mode_P);
+  ir_node *res7 = new_Add( get_value(i_pos, mode_Is), b7, mode_Is);
+  set_store(new_Proj(new_Store(get_store(), res, res7), mode_M, 0));
+  set_value(i_pos, new_Sub(get_value(i_pos, mode_Is), c, mode_Is));
+  function_end(b);
+
+  /* -------------------------------------------------------------------------- */
+
+  int i, n_irgs = get_irp_n_irgs();
+
+  printf("Done building the graph.  Dumping and optimizing it.\n");
+  dump_consts_local(1);
+  turn_off_edge_labels();
+  for (i = 0; i < n_irgs; ++i) {
+    current_ir_graph = get_irp_irg(i);
+    irg_vrfy(current_ir_graph);
+    finalize_cons (current_ir_graph);
+
+    /* output the vcg file */
+    dump_ir_block_graph (current_ir_graph, 0);
+    construct_backedges(current_ir_graph);
+    dump_ir_graph (current_ir_graph, 0);
+    dump_all_types(0);
+    set_opt_strength_red_verbose(2);
+    set_firm_verbosity(2);
+    set_optimize(0);
+    set_opt_loop_unrolling(1);
+    optimize_loop_unrolling(current_ir_graph);
+    // optimize_reassociation(current_ir_graph);
+    //reduce_strength(current_ir_graph);
+
+
+    // remove_critical_cf_edges(current_ir_graph);
+    //set_opt_global_cse(1);
+    //place_code(current_ir_graph);
+    //set_opt_global_cse(0);
+    dump_loop_tree(current_ir_graph, "");
+    dump_ir_block_graph (current_ir_graph, "-loop-unrolling");
+    // dump_ir_graph (current_ir_graph, "-pure-loop-unrolling");
+  }
+  //printf("use xvcg to view this graph:\n");
+  //printf("/ben/goetz/bin/xvcg GRAPHNAME\n\n");
+
+  return (0);
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m1-loop-unrolling.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m1-loop-unrolling.vcg
new file mode 100644 (file)
index 0000000..4659c77
--- /dev/null
@@ -0,0 +1,1031 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m1"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+graph: { title: "g45" label: "LOOP_UNROLL_EXAMPLE_m1" status:clustered color:white
+graph: { title: "n93"  label: "Block 93" status:clustered color:yellow
+edge: {sourcename: "n93" targetname: "n55" label: "0" class:13 priority:60 color:red}
+backedge: {sourcename: "n93" targetname: "n114" label: "1" linestyle:dashed class:13 priority:60 color:red}
+node: {title: "n120" label: "PhiM  120"  info1: "Phi 120
+  mode:    M
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 93
+     0:    Phi 91
+     1:    Proj 112
+  Private Attributes:
+  backedges:
+  in loop 526 with depth 1
+"
+color: green}
+edge: {sourcename: "n120" targetname: "n91" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n120" targetname: "n112" label: "1" class:17 priority:10 color:blue}
+node: {title: "n119" label: "PhiIs  119"  info1: "Phi 119
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 93
+     0:    Phi 92
+     1:    Sub 113
+  Private Attributes:
+  backedges:
+  in loop 525 with depth 1
+"
+color: green}
+edge: {sourcename: "n119" targetname: "n92" label: "0" class:16 priority:10}
+edge: {sourcename: "n119" targetname: "n113" label: "1" class:16 priority:10}
+node: {title: "n100" label: "Jmp  100"  info1: "Jmp 100
+  mode:    X
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 93
+  Private Attributes:
+  in loop 524 with depth 1
+"
+}
+}
+
+graph: { title: "n49"  label: "Block 49" status:clustered color:yellow
+edge: {sourcename: "n49" targetname: "n48" label: "0" class:13 priority:60 color:red}
+backedge: {sourcename: "n49" targetname: "n537" label: "1" linestyle:dashed class:13 priority:60 color:red}
+node: {title: "n91" label: "PhiM  91"  info1: "Phi 91
+  mode:    M
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 49
+     0:    Proj 43
+     1:    Proj 535
+  Private Attributes:
+  backedges:
+  in loop 523 with depth 1
+"
+color: green}
+edge: {sourcename: "n91" targetname: "n43" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n91" targetname: "n535" label: "1" class:17 priority:10 color:blue}
+node: {title: "n55" label: "ProjX 0 55"  info1: "Proj 55
+  mode:    X
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 49
+     0:    Cond 54
+  Private Attributes:
+  in loop 520 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n55" targetname: "n54" label: "0" class:13 priority:60 color:red}
+node: {title: "n56" label: "ProjX 1 56"  info1: "Proj 56
+  mode:    X
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 49
+     0:    Cond 54
+  Private Attributes:
+  in loop 522 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n56" targetname: "n54" label: "0" class:13 priority:60 color:red}
+node: {title: "n54" label: "Cond  54"  info1: "Cond 54
+  mode:    T
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 49
+     0:    Proj 53
+  Private Attributes:
+  in loop 522 with depth 2
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n54" targetname: "n53" label: "0" class:1  priority:50}
+node: {title: "n53" label: "Projb Gt 53"  info1: "Proj 53
+  mode:    b
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 49
+     0:    Cmp 52
+  Private Attributes:
+  in loop 522 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n53" targetname: "n52" label: "0" class:1  priority:50}
+node: {title: "n52" label: "Cmp  52"  info1: "Cmp 52
+  mode:    T
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 49
+     0:    0xA 51
+     1:    Phi 92
+  Private Attributes:
+  in loop 522 with depth 2
+"
+}
+node: {title: "n52n51" label: "0xAIs  51"  info1: "0xA 51
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n52" targetname: "n52n51" label: "0" class:16 priority:10}
+edge: {sourcename: "n52" targetname: "n92" label: "1" class:1  priority:50}
+node: {title: "n92" label: "PhiIs  92"  info1: "Phi 92
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 49
+     0:    0x0 47
+     1:    Add 536
+  Private Attributes:
+  backedges:
+  in loop 521 with depth 1
+"
+color: green}
+node: {title: "n92n47" label: "0x0Is  47"  info1: "0x0 47
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n92" targetname: "n92n47" label: "0" class:16 priority:10}
+edge: {sourcename: "n92" targetname: "n536" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n46"  label: "Block 46" status:clustered color:yellow
+edge: {sourcename: "n46" targetname: "n40" label: "0" class:13 priority:60 color:red}
+node: {title: "n48" label: "Jmp  48"  info1: "Jmp 48
+  mode:    X
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 46
+  Private Attributes:
+  in loop 520 with depth 0
+"
+}
+}
+
+graph: { title: "n538"  label: "Block 538" status:clustered color:yellow
+edge: {sourcename: "n538" targetname: "n85" label: "0" class:13 priority:60 color:red}
+node: {title: "n535" label: "ProjM 0 535"  info1: "Proj 535
+  mode:    M
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 538
+     0:    Store 534
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n535" targetname: "n534" label: "0" class:17 priority:10 color:blue}
+node: {title: "n534" label: "Store  534"  info1: "Store 534
+  mode:    T
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   3
+  pred nodes:
+    -1:    Block 538
+     0:    Proj 533
+     1:    Add 540
+     2:    0xF 80
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n534n80" label: "0xFIs  80"  info1: "0xF 80
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n534" targetname: "n533" label: "0" class:14 priority:50 color:blue}
+edge: {sourcename: "n534" targetname: "n540" label: "1" class:1  priority:50}
+edge: {sourcename: "n534" targetname: "n534n80" label: "2" class:16 priority:10}
+node: {title: "n533" label: "ProjM 0 533"  info1: "Proj 533
+  mode:    M
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 538
+     0:    Store 532
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n533" targetname: "n532" label: "0" class:17 priority:10 color:blue}
+node: {title: "n532" label: "Store  532"  info1: "Store 532
+  mode:    T
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   3
+  pred nodes:
+    -1:    Block 538
+     0:    Proj 531
+     1:    Add 542
+     2:    0x10 73
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n532n73" label: "0x10Is  73"  info1: "0x10 73
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n532" targetname: "n531" label: "0" class:14 priority:50 color:blue}
+edge: {sourcename: "n532" targetname: "n542" label: "1" class:1  priority:50}
+edge: {sourcename: "n532" targetname: "n532n73" label: "2" class:16 priority:10}
+node: {title: "n531" label: "ProjM 0 531"  info1: "Proj 531
+  mode:    M
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 538
+     0:    Store 530
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n531" targetname: "n530" label: "0" class:17 priority:10 color:blue}
+node: {title: "n530" label: "Store  530"  info1: "Store 530
+  mode:    T
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   3
+  pred nodes:
+    -1:    Block 538
+     0:    Proj 83
+     1:    Add 540
+     2:    0x13 68
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n530n68" label: "0x13Is  68"  info1: "0x13 68
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n530" targetname: "n83" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n530" targetname: "n540" label: "1" class:1  priority:50}
+edge: {sourcename: "n530" targetname: "n530n68" label: "2" class:16 priority:10}
+node: {title: "n542" label: "AddP  542"  info1: "Add 542
+  mode:    P
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 538
+     0:    SymC &a2 62
+     1:    Mul 541
+  Private Attributes:
+"
+}
+node: {title: "n542n62" label: "SymC &a2  62"  info1: "SymC &a2 62
+  mode:    P
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a2 (32)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n542" targetname: "n542n62" label: "0" class:16 priority:10}
+edge: {sourcename: "n542" targetname: "n541" label: "1" class:1  priority:50}
+node: {title: "n541" label: "MulIs  541"  info1: "Mul 541
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 538
+     0:    0xC 60
+     1:    Add 84
+  Private Attributes:
+"
+}
+node: {title: "n541n60" label: "0xCIs  60"  info1: "0xC 60
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n541" targetname: "n541n60" label: "0" class:16 priority:10}
+edge: {sourcename: "n541" targetname: "n84" label: "1" class:16 priority:10}
+node: {title: "n540" label: "AddP  540"  info1: "Add 540
+  mode:    P
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 538
+     0:    SymC &a 61
+     1:    Mul 539
+  Private Attributes:
+"
+}
+node: {title: "n540n61" label: "SymC &a  61"  info1: "SymC &a 61
+  mode:    P
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (31)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n540" targetname: "n540n61" label: "0" class:16 priority:10}
+edge: {sourcename: "n540" targetname: "n539" label: "1" class:1  priority:50}
+node: {title: "n539" label: "MulIs  539"  info1: "Mul 539
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 538
+     0:    0x4 59
+     1:    Add 84
+  Private Attributes:
+"
+}
+node: {title: "n539n59" label: "0x4Is  59"  info1: "0x4 59
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n539" targetname: "n539n59" label: "0" class:16 priority:10}
+edge: {sourcename: "n539" targetname: "n84" label: "1" class:16 priority:10}
+node: {title: "n537" label: "Jmp  537"  info1: "Jmp 537
+  mode:    X
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 538
+  Private Attributes:
+"
+}
+node: {title: "n536" label: "AddIs  536"  info1: "Add 536
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 538
+     0:    0x1 58
+     1:    Add 84
+  Private Attributes:
+"
+}
+node: {title: "n536n58" label: "0x1Is  58"  info1: "0x1 58
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n536" targetname: "n536n58" label: "0" class:16 priority:10}
+edge: {sourcename: "n536" targetname: "n84" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n57"  label: "Block 57" status:clustered color:yellow
+edge: {sourcename: "n57" targetname: "n56" label: "0" class:13 priority:60 color:red}
+node: {title: "n83" label: "ProjM 0 83"  info1: "Proj 83
+  mode:    M
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 57
+     0:    Store 81
+  Private Attributes:
+  in loop 523 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n83" targetname: "n81" label: "0" class:17 priority:10 color:blue}
+node: {title: "n81" label: "Store  81"  info1: "Store 81
+  mode:    T
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   3
+  pred nodes:
+    -1:    Block 57
+     0:    Proj 76
+     1:    Add 65
+     2:    0xF 80
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 523 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n81n80" label: "0xFIs  80"  info1: "0xF 80
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n81" targetname: "n76" label: "0" class:14 priority:50 color:blue}
+edge: {sourcename: "n81" targetname: "n65" label: "1" class:1  priority:50}
+edge: {sourcename: "n81" targetname: "n81n80" label: "2" class:16 priority:10}
+node: {title: "n76" label: "ProjM 0 76"  info1: "Proj 76
+  mode:    M
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 57
+     0:    Store 74
+  Private Attributes:
+  in loop 523 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n76" targetname: "n74" label: "0" class:17 priority:10 color:blue}
+node: {title: "n74" label: "Store  74"  info1: "Store 74
+  mode:    T
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   3
+  pred nodes:
+    -1:    Block 57
+     0:    Proj 72
+     1:    Add 67
+     2:    0x10 73
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 523 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n74n73" label: "0x10Is  73"  info1: "0x10 73
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n74" targetname: "n72" label: "0" class:14 priority:50 color:blue}
+edge: {sourcename: "n74" targetname: "n67" label: "1" class:1  priority:50}
+edge: {sourcename: "n74" targetname: "n74n73" label: "2" class:16 priority:10}
+node: {title: "n72" label: "ProjM 0 72"  info1: "Proj 72
+  mode:    M
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 57
+     0:    Store 70
+  Private Attributes:
+  in loop 523 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n72" targetname: "n70" label: "0" class:17 priority:10 color:blue}
+node: {title: "n70" label: "Store  70"  info1: "Store 70
+  mode:    T
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   3
+  pred nodes:
+    -1:    Block 57
+     0:    Phi 91
+     1:    Add 65
+     2:    0x13 68
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 523 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n70n68" label: "0x13Is  68"  info1: "0x13 68
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n70" targetname: "n91" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n70" targetname: "n65" label: "1" class:1  priority:50}
+edge: {sourcename: "n70" targetname: "n70n68" label: "2" class:16 priority:10}
+node: {title: "n67" label: "AddP  67"  info1: "Add 67
+  mode:    P
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 57
+     0:    SymC &a2 62
+     1:    Mul 66
+  Private Attributes:
+  in loop 520 with depth 0
+"
+}
+node: {title: "n67n62" label: "SymC &a2  62"  info1: "SymC &a2 62
+  mode:    P
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a2 (32)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n67" targetname: "n67n62" label: "0" class:16 priority:10}
+edge: {sourcename: "n67" targetname: "n66" label: "1" class:1  priority:50}
+node: {title: "n66" label: "MulIs  66"  info1: "Mul 66
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 57
+     0:    0xC 60
+     1:    Phi 92
+  Private Attributes:
+  in loop 520 with depth 0
+"
+}
+node: {title: "n66n60" label: "0xCIs  60"  info1: "0xC 60
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n66" targetname: "n66n60" label: "0" class:16 priority:10}
+edge: {sourcename: "n66" targetname: "n92" label: "1" class:16 priority:10}
+node: {title: "n65" label: "AddP  65"  info1: "Add 65
+  mode:    P
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 57
+     0:    SymC &a 61
+     1:    Mul 64
+  Private Attributes:
+  in loop 520 with depth 0
+"
+}
+node: {title: "n65n61" label: "SymC &a  61"  info1: "SymC &a 61
+  mode:    P
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (31)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n65" targetname: "n65n61" label: "0" class:16 priority:10}
+edge: {sourcename: "n65" targetname: "n64" label: "1" class:1  priority:50}
+node: {title: "n64" label: "MulIs  64"  info1: "Mul 64
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 57
+     0:    0x4 59
+     1:    Phi 92
+  Private Attributes:
+  in loop 520 with depth 0
+"
+}
+node: {title: "n64n59" label: "0x4Is  59"  info1: "0x4 59
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n64" targetname: "n64n59" label: "0" class:16 priority:10}
+edge: {sourcename: "n64" targetname: "n92" label: "1" class:16 priority:10}
+node: {title: "n85" label: "Jmp  85"  info1: "Jmp 85
+  mode:    X
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 57
+  Private Attributes:
+  in loop 522 with depth 2
+"
+}
+node: {title: "n84" label: "AddIs  84"  info1: "Add 84
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 57
+     0:    0x1 58
+     1:    Phi 92
+  Private Attributes:
+  in loop 521 with depth 1
+"
+}
+node: {title: "n84n58" label: "0x1Is  58"  info1: "0x1 58
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n84" targetname: "n84n58" label: "0" class:16 priority:10}
+edge: {sourcename: "n84" targetname: "n92" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n103"  label: "Block 103" status:clustered color:yellow
+edge: {sourcename: "n103" targetname: "n100" label: "0" class:13 priority:60 color:red}
+node: {title: "n112" label: "ProjM 0 112"  info1: "Proj 112
+  mode:    M
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 103
+     0:    Store 110
+  Private Attributes:
+  in loop 526 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n112" targetname: "n110" label: "0" class:17 priority:10 color:blue}
+node: {title: "n110" label: "Store  110"  info1: "Store 110
+  mode:    T
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   3
+  pred nodes:
+    -1:    Block 103
+     0:    Phi 120
+     1:    Add 107
+     2:    0x13 68
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 526 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n110n68" label: "0x13Is  68"  info1: "0x13 68
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n110" targetname: "n120" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n110" targetname: "n107" label: "1" class:1  priority:50}
+edge: {sourcename: "n110" targetname: "n110n68" label: "2" class:16 priority:10}
+node: {title: "n107" label: "AddP  107"  info1: "Add 107
+  mode:    P
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 103
+     0:    SymC &a 61
+     1:    Mul 106
+  Private Attributes:
+  in loop 520 with depth 0
+"
+}
+node: {title: "n107n61" label: "SymC &a  61"  info1: "SymC &a 61
+  mode:    P
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (31)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n107" targetname: "n107n61" label: "0" class:16 priority:10}
+edge: {sourcename: "n107" targetname: "n106" label: "1" class:1  priority:50}
+node: {title: "n106" label: "MulIs  106"  info1: "Mul 106
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 103
+     0:    0x4 59
+     1:    Phi 119
+  Private Attributes:
+  in loop 520 with depth 0
+"
+}
+node: {title: "n106n59" label: "0x4Is  59"  info1: "0x4 59
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n106" targetname: "n106n59" label: "0" class:16 priority:10}
+edge: {sourcename: "n106" targetname: "n119" label: "1" class:16 priority:10}
+node: {title: "n113" label: "SubIs  113"  info1: "Sub 113
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 103
+     0:    Phi 119
+     1:    0x1 58
+  Private Attributes:
+  in loop 525 with depth 1
+"
+}
+node: {title: "n113n58" label: "0x1Is  58"  info1: "0x1 58
+  mode:    Is
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n113" targetname: "n119" label: "0" class:16 priority:10}
+edge: {sourcename: "n113" targetname: "n113n58" label: "1" class:16 priority:10}
+node: {title: "n114" label: "Jmp  114"  info1: "Jmp 114
+  mode:    X
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 103
+  Private Attributes:
+  in loop 524 with depth 1
+"
+}
+}
+
+graph: { title: "n34"  label: "Block 34" status:clustered color:yellow
+edge: {sourcename: "n34" targetname: "n34n38" label: "0" class:13 priority:60 color:red}
+node: {title: "n35" label: "End  35"  info1: "End 35
+  mode:    X
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   3
+  pred nodes:
+    -1:    Block 34
+     0:    Phi 91
+     1:    Block 93
+     2:    Phi 120
+  Private Attributes:
+  in loop 520 with depth 0
+"
+color: blue}
+}
+node: {title: "n34n38" label: "Bad  38"  info1: "Bad 38
+  mode:    T
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 520 with depth 0
+"
+}
+
+graph: { title: "n36"  label: "Block 36" status:clustered color:yellow
+edge: {sourcename: "n36" targetname: "n40" label: "0" class:13 priority:60 color:red}
+node: {title: "n43" label: "ProjM 1 43"  info1: "Proj 43
+  mode:    M
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 36
+     0:    Start 37
+  Private Attributes:
+  in loop 520 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n43" targetname: "n37" label: "0" class:17 priority:10 color:blue}
+node: {title: "n40" label: "ProjX 0 40"  info1: "Proj 40
+  mode:    X
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 36
+     0:    Start 37
+  Private Attributes:
+  in loop 520 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n40" targetname: "n37" label: "0" class:13 priority:60 color:red}
+node: {title: "n37" label: "Start  37"  info1: "Start 37
+  mode:    T
+  visited: 37
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+}
+
+}
+
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m1-looptree.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m1-looptree.vcg
new file mode 100644 (file)
index 0000000..f42bc30
--- /dev/null
@@ -0,0 +1,73 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m1"
+display_edge_labels: yes
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: top_to_bottom
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+node: {title: "l527" label: "loop 0, 2 sons, 3 nodes"  info1: " loop nr: 527
+ The loop was analyzed 0 times."}
+node: { title: "l527-0-nodes" color: lightyellow label: "Block  36
+Block  34
+Block  46" }
+edge: {sourcename: "l527" targetname: "l527-0-nodes" label:"0...2"}
+edge: {sourcename: "l527" targetname: "l528" color: darkgreen label: "3"}
+node: {title: "l528" label: "loop 1, 0 sons, 2 nodes"  info1: " loop nr: 528
+ The loop was analyzed 0 times."}
+node: { title: "l528-0-nodes" color: lightyellow label: "Block  49      loop head!
+Block  57" }
+edge: {sourcename: "l528" targetname: "l528-0-nodes" label:"0...1"}
+edge: {sourcename: "l527" targetname: "l529" color: darkgreen label: "4"}
+node: {title: "l529" label: "loop 1, 0 sons, 2 nodes"  info1: " loop nr: 529
+ The loop was analyzed 0 times."}
+node: { title: "l529-0-nodes" color: lightyellow label: "Block  93      loop head!
+Block  103" }
+edge: {sourcename: "l529" targetname: "l529-0-nodes" label:"0...1"}
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m1-pure.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m1-pure.vcg
new file mode 100644 (file)
index 0000000..96f93d8
--- /dev/null
@@ -0,0 +1,864 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m1"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+node: {title: "n37" label: "Start  37"  info1: "Start 37
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+edge: { sourcename: "n37" targetname: "n36" class:2  priority:50 linestyle:dotted}
+node: {title: "n40" label: "ProjX 0 40"  info1: "Proj 40
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 36
+     0:    Start 37
+  Private Attributes:
+  in loop 520 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n40" targetname: "n37" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n40" targetname: "n36" class:2  priority:50 linestyle:dotted}
+node: {title: "n36" label: "Block  36"  info1: "Block 36
+  mode:    BB
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+     0:    Proj 40
+  Private Attributes:
+  backedges:
+  in loop 520 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n36" targetname: "n40" label: "0" class:13 priority:60 color:red}
+node: {title: "n34" label: "Block  34"  info1: "Block 34
+  mode:    BB
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+     0:    Bad 38
+  Private Attributes:
+  backedges:
+  in loop 520 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+node: {title: "n34n38" label: "Bad  38"  info1: "Bad 38
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 520 with depth 0
+"
+}
+edge: {sourcename: "n34" targetname: "n34n38" label: "0" class:13 priority:60 color:red}
+node: {title: "n100" label: "Jmp  100"  info1: "Jmp 100
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 93
+  Private Attributes:
+  in loop 524 with depth 1
+"
+}
+edge: { sourcename: "n100" targetname: "n93" class:2  priority:50 linestyle:dotted}
+node: {title: "n103" label: "Block  103"  info1: "Block 103
+  mode:    BB
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+     0:    Jmp 100
+  Private Attributes:
+  backedges:
+  in loop 524 with depth 1
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n103" targetname: "n100" label: "0" class:13 priority:60 color:red}
+node: {title: "n114" label: "Jmp  114"  info1: "Jmp 114
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 103
+  Private Attributes:
+  in loop 524 with depth 1
+"
+}
+edge: { sourcename: "n114" targetname: "n103" class:2  priority:50 linestyle:dotted}
+node: {title: "n84" label: "AddIs  84"  info1: "Add 84
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 57
+     0:    0x1 58
+     1:    Phi 92
+  Private Attributes:
+  in loop 521 with depth 1
+"
+}
+node: {title: "n84n58" label: "0x1Is  58"  info1: "0x1 58
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n84" targetname: "n84n58" label: "0" class:16 priority:10}
+edge: {sourcename: "n84" targetname: "n92" label: "1" class:16 priority:10}
+edge: { sourcename: "n84" targetname: "n57" class:2  priority:50 linestyle:dotted}
+node: {title: "n92" label: "PhiIs  92"  info1: "Phi 92
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 49
+     0:    0x0 47
+     1: be Add 84
+  Private Attributes:
+  backedges:  1
+  in loop 521 with depth 1
+"
+color: green}
+node: {title: "n92n47" label: "0x0Is  47"  info1: "0x0 47
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n92" targetname: "n92n47" label: "0" class:16 priority:10}
+backedge: {sourcename: "n92" targetname: "n84" label: "1" linestyle:dashed class:16 priority:10}
+edge: { sourcename: "n92" targetname: "n49" class:2  priority:50 linestyle:dotted}
+node: {title: "n52" label: "Cmp  52"  info1: "Cmp 52
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 49
+     0:    0xA 51
+     1:    Phi 92
+  Private Attributes:
+  in loop 522 with depth 2
+"
+}
+node: {title: "n52n51" label: "0xAIs  51"  info1: "0xA 51
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n52" targetname: "n52n51" label: "0" class:16 priority:10}
+edge: {sourcename: "n52" targetname: "n92" label: "1" class:1  priority:50}
+edge: { sourcename: "n52" targetname: "n49" class:2  priority:50 linestyle:dotted}
+node: {title: "n53" label: "Projb Gt 53"  info1: "Proj 53
+  mode:    b
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 49
+     0:    Cmp 52
+  Private Attributes:
+  in loop 522 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n53" targetname: "n52" label: "0" class:1  priority:50}
+edge: { sourcename: "n53" targetname: "n49" class:2  priority:50 linestyle:dotted}
+node: {title: "n54" label: "Cond  54"  info1: "Cond 54
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 49
+     0:    Proj 53
+  Private Attributes:
+  in loop 522 with depth 2
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n54" targetname: "n53" label: "0" class:1  priority:50}
+edge: { sourcename: "n54" targetname: "n49" class:2  priority:50 linestyle:dotted}
+node: {title: "n56" label: "ProjX 1 56"  info1: "Proj 56
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 49
+     0:    Cond 54
+  Private Attributes:
+  in loop 522 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n56" targetname: "n54" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n56" targetname: "n49" class:2  priority:50 linestyle:dotted}
+node: {title: "n57" label: "Block  57"  info1: "Block 57
+  mode:    BB
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+     0:    Proj 56
+  Private Attributes:
+  backedges:
+  in loop 522 with depth 2
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n57" targetname: "n56" label: "0" class:13 priority:60 color:red}
+node: {title: "n85" label: "Jmp  85"  info1: "Jmp 85
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 57
+  Private Attributes:
+  in loop 522 with depth 2
+"
+}
+edge: { sourcename: "n85" targetname: "n57" class:2  priority:50 linestyle:dotted}
+node: {title: "n46" label: "Block  46"  info1: "Block 46
+  mode:    BB
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+     0:    Proj 40
+  Private Attributes:
+  backedges:
+  in loop 520 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n46" targetname: "n40" label: "0" class:13 priority:60 color:red}
+node: {title: "n48" label: "Jmp  48"  info1: "Jmp 48
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 46
+  Private Attributes:
+  in loop 520 with depth 0
+"
+}
+edge: { sourcename: "n48" targetname: "n46" class:2  priority:50 linestyle:dotted}
+node: {title: "n49" label: "Block  49"  info1: "Block 49
+  mode:    BB
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+     0:    Jmp 48
+     1: be Jmp 85
+  Private Attributes:
+  backedges:  1
+  in loop 522 with depth 2
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n49" targetname: "n48" label: "0" class:13 priority:60 color:red}
+backedge: {sourcename: "n49" targetname: "n85" label: "1" linestyle:dashed class:13 priority:60 color:red}
+node: {title: "n55" label: "ProjX 0 55"  info1: "Proj 55
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 49
+     0:    Cond 54
+  Private Attributes:
+  in loop 520 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n55" targetname: "n54" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n55" targetname: "n49" class:2  priority:50 linestyle:dotted}
+node: {title: "n93" label: "Block  93"  info1: "Block 93
+  mode:    BB
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+     0:    Proj 55
+     1: be Jmp 114
+  Private Attributes:
+  backedges:  1
+  in loop 524 with depth 1
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n93" targetname: "n55" label: "0" class:13 priority:60 color:red}
+backedge: {sourcename: "n93" targetname: "n114" label: "1" linestyle:dashed class:13 priority:60 color:red}
+node: {title: "n113" label: "SubIs  113"  info1: "Sub 113
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 103
+     0:    Phi 119
+     1:    0x1 58
+  Private Attributes:
+  in loop 525 with depth 1
+"
+}
+node: {title: "n113n58" label: "0x1Is  58"  info1: "0x1 58
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n113" targetname: "n119" label: "0" class:16 priority:10}
+edge: {sourcename: "n113" targetname: "n113n58" label: "1" class:16 priority:10}
+edge: { sourcename: "n113" targetname: "n103" class:2  priority:50 linestyle:dotted}
+node: {title: "n119" label: "PhiIs  119"  info1: "Phi 119
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 93
+     0:    Phi 92
+     1: be Sub 113
+  Private Attributes:
+  backedges:  1
+  in loop 525 with depth 1
+"
+color: green}
+edge: {sourcename: "n119" targetname: "n92" label: "0" class:16 priority:10}
+backedge: {sourcename: "n119" targetname: "n113" label: "1" linestyle:dashed class:16 priority:10}
+edge: { sourcename: "n119" targetname: "n93" class:2  priority:50 linestyle:dotted}
+node: {title: "n106" label: "MulIs  106"  info1: "Mul 106
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 103
+     0:    0x4 59
+     1:    Phi 119
+  Private Attributes:
+  in loop 520 with depth 0
+"
+}
+node: {title: "n106n59" label: "0x4Is  59"  info1: "0x4 59
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n106" targetname: "n106n59" label: "0" class:16 priority:10}
+edge: {sourcename: "n106" targetname: "n119" label: "1" class:16 priority:10}
+edge: { sourcename: "n106" targetname: "n103" class:2  priority:50 linestyle:dotted}
+node: {title: "n107" label: "AddP  107"  info1: "Add 107
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 103
+     0:    SymC &a 61
+     1:    Mul 106
+  Private Attributes:
+  in loop 520 with depth 0
+"
+}
+node: {title: "n107n61" label: "SymC &a  61"  info1: "SymC &a 61
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (31)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n107" targetname: "n107n61" label: "0" class:16 priority:10}
+edge: {sourcename: "n107" targetname: "n106" label: "1" class:1  priority:50}
+edge: { sourcename: "n107" targetname: "n103" class:2  priority:50 linestyle:dotted}
+node: {title: "n110" label: "Store  110"  info1: "Store 110
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   3
+  pred nodes:
+    -1:    Block 103
+     0:    Phi 120
+     1:    Add 107
+     2:    0x13 68
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 526 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n110n68" label: "0x13Is  68"  info1: "0x13 68
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n110" targetname: "n120" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n110" targetname: "n107" label: "1" class:1  priority:50}
+edge: {sourcename: "n110" targetname: "n110n68" label: "2" class:16 priority:10}
+edge: { sourcename: "n110" targetname: "n103" class:2  priority:50 linestyle:dotted}
+node: {title: "n112" label: "ProjM 0 112"  info1: "Proj 112
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 103
+     0:    Store 110
+  Private Attributes:
+  in loop 526 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n112" targetname: "n110" label: "0" class:17 priority:10 color:blue}
+edge: { sourcename: "n112" targetname: "n103" class:2  priority:50 linestyle:dotted}
+node: {title: "n64" label: "MulIs  64"  info1: "Mul 64
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 57
+     0:    0x4 59
+     1:    Phi 92
+  Private Attributes:
+  in loop 520 with depth 0
+"
+}
+node: {title: "n64n59" label: "0x4Is  59"  info1: "0x4 59
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n64" targetname: "n64n59" label: "0" class:16 priority:10}
+edge: {sourcename: "n64" targetname: "n92" label: "1" class:16 priority:10}
+edge: { sourcename: "n64" targetname: "n57" class:2  priority:50 linestyle:dotted}
+node: {title: "n65" label: "AddP  65"  info1: "Add 65
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 57
+     0:    SymC &a 61
+     1:    Mul 64
+  Private Attributes:
+  in loop 520 with depth 0
+"
+}
+node: {title: "n65n61" label: "SymC &a  61"  info1: "SymC &a 61
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (31)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n65" targetname: "n65n61" label: "0" class:16 priority:10}
+edge: {sourcename: "n65" targetname: "n64" label: "1" class:1  priority:50}
+edge: { sourcename: "n65" targetname: "n57" class:2  priority:50 linestyle:dotted}
+node: {title: "n66" label: "MulIs  66"  info1: "Mul 66
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 57
+     0:    0xC 60
+     1:    Phi 92
+  Private Attributes:
+  in loop 520 with depth 0
+"
+}
+node: {title: "n66n60" label: "0xCIs  60"  info1: "0xC 60
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n66" targetname: "n66n60" label: "0" class:16 priority:10}
+edge: {sourcename: "n66" targetname: "n92" label: "1" class:16 priority:10}
+edge: { sourcename: "n66" targetname: "n57" class:2  priority:50 linestyle:dotted}
+node: {title: "n67" label: "AddP  67"  info1: "Add 67
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 57
+     0:    SymC &a2 62
+     1:    Mul 66
+  Private Attributes:
+  in loop 520 with depth 0
+"
+}
+node: {title: "n67n62" label: "SymC &a2  62"  info1: "SymC &a2 62
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a2 (32)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n67" targetname: "n67n62" label: "0" class:16 priority:10}
+edge: {sourcename: "n67" targetname: "n66" label: "1" class:1  priority:50}
+edge: { sourcename: "n67" targetname: "n57" class:2  priority:50 linestyle:dotted}
+node: {title: "n70" label: "Store  70"  info1: "Store 70
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   3
+  pred nodes:
+    -1:    Block 57
+     0:    Phi 91
+     1:    Add 65
+     2:    0x13 68
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 523 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n70n68" label: "0x13Is  68"  info1: "0x13 68
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n70" targetname: "n91" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n70" targetname: "n65" label: "1" class:1  priority:50}
+edge: {sourcename: "n70" targetname: "n70n68" label: "2" class:16 priority:10}
+edge: { sourcename: "n70" targetname: "n57" class:2  priority:50 linestyle:dotted}
+node: {title: "n72" label: "ProjM 0 72"  info1: "Proj 72
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 57
+     0:    Store 70
+  Private Attributes:
+  in loop 523 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n72" targetname: "n70" label: "0" class:17 priority:10 color:blue}
+edge: { sourcename: "n72" targetname: "n57" class:2  priority:50 linestyle:dotted}
+node: {title: "n74" label: "Store  74"  info1: "Store 74
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   3
+  pred nodes:
+    -1:    Block 57
+     0:    Proj 72
+     1:    Add 67
+     2:    0x10 73
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 523 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n74n73" label: "0x10Is  73"  info1: "0x10 73
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n74" targetname: "n72" label: "0" class:14 priority:50 color:blue}
+edge: {sourcename: "n74" targetname: "n67" label: "1" class:1  priority:50}
+edge: {sourcename: "n74" targetname: "n74n73" label: "2" class:16 priority:10}
+edge: { sourcename: "n74" targetname: "n57" class:2  priority:50 linestyle:dotted}
+node: {title: "n76" label: "ProjM 0 76"  info1: "Proj 76
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 57
+     0:    Store 74
+  Private Attributes:
+  in loop 523 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n76" targetname: "n74" label: "0" class:17 priority:10 color:blue}
+edge: { sourcename: "n76" targetname: "n57" class:2  priority:50 linestyle:dotted}
+node: {title: "n81" label: "Store  81"  info1: "Store 81
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   3
+  pred nodes:
+    -1:    Block 57
+     0:    Proj 76
+     1:    Add 65
+     2:    0xF 80
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 523 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n81n80" label: "0xFIs  80"  info1: "0xF 80
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  in loop 520 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n81" targetname: "n76" label: "0" class:14 priority:50 color:blue}
+edge: {sourcename: "n81" targetname: "n65" label: "1" class:1  priority:50}
+edge: {sourcename: "n81" targetname: "n81n80" label: "2" class:16 priority:10}
+edge: { sourcename: "n81" targetname: "n57" class:2  priority:50 linestyle:dotted}
+node: {title: "n83" label: "ProjM 0 83"  info1: "Proj 83
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 57
+     0:    Store 81
+  Private Attributes:
+  in loop 523 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n83" targetname: "n81" label: "0" class:17 priority:10 color:blue}
+edge: { sourcename: "n83" targetname: "n57" class:2  priority:50 linestyle:dotted}
+node: {title: "n43" label: "ProjM 1 43"  info1: "Proj 43
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 36
+     0:    Start 37
+  Private Attributes:
+  in loop 520 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n43" targetname: "n37" label: "0" class:17 priority:10 color:blue}
+edge: { sourcename: "n43" targetname: "n36" class:2  priority:50 linestyle:dotted}
+node: {title: "n91" label: "PhiM  91"  info1: "Phi 91
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 49
+     0:    Proj 43
+     1: be Proj 83
+  Private Attributes:
+  backedges:  1
+  in loop 523 with depth 1
+"
+color: green}
+edge: {sourcename: "n91" targetname: "n43" label: "0" class:17 priority:10 color:blue}
+backedge: {sourcename: "n91" targetname: "n83" label: "1" linestyle:dashed class:17 priority:10 color:blue}
+edge: { sourcename: "n91" targetname: "n49" class:2  priority:50 linestyle:dotted}
+node: {title: "n120" label: "PhiM  120"  info1: "Phi 120
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 93
+     0:    Phi 91
+     1: be Proj 112
+  Private Attributes:
+  backedges:  1
+  in loop 526 with depth 1
+"
+color: green}
+edge: {sourcename: "n120" targetname: "n91" label: "0" class:17 priority:10 color:blue}
+backedge: {sourcename: "n120" targetname: "n112" label: "1" linestyle:dashed class:17 priority:10 color:blue}
+edge: { sourcename: "n120" targetname: "n93" class:2  priority:50 linestyle:dotted}
+node: {title: "n35" label: "End  35"  info1: "End 35
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   3
+  pred nodes:
+    -1:    Block 34
+     0:    Phi 91
+     1:    Block 93
+     2:    Phi 120
+  Private Attributes:
+  in loop 520 with depth 0
+"
+color: blue}
+edge: { sourcename: "n35" targetname: "n34" class:2  priority:50 linestyle:dotted}
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m1.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m1.vcg
new file mode 100644 (file)
index 0000000..d3944d9
--- /dev/null
@@ -0,0 +1,707 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m1"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+graph: { title: "g45" label: "LOOP_UNROLL_EXAMPLE_m1" status:clustered color:white
+graph: { title: "n93"  label: "Block 93" status:clustered color:yellow
+edge: {sourcename: "n93" targetname: "n55" label: "0" class:13 priority:60 color:red}
+edge: {sourcename: "n93" targetname: "n114" label: "1" class:13 priority:60 color:red}
+node: {title: "n120" label: "PhiM  120"  info1: "Phi 120
+  mode:    M
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 93
+     0:    Phi 91
+     1:    Proj 112
+  Private Attributes:
+  backedges:
+"
+color: green}
+edge: {sourcename: "n120" targetname: "n91" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n120" targetname: "n112" label: "1" class:17 priority:10 color:blue}
+node: {title: "n119" label: "PhiIs  119"  info1: "Phi 119
+  mode:    Is
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 93
+     0:    Phi 92
+     1:    Sub 113
+  Private Attributes:
+  backedges:
+"
+color: green}
+edge: {sourcename: "n119" targetname: "n92" label: "0" class:16 priority:10}
+edge: {sourcename: "n119" targetname: "n113" label: "1" class:16 priority:10}
+node: {title: "n100" label: "Jmp  100"  info1: "Jmp 100
+  mode:    X
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 93
+  Private Attributes:
+"
+}
+}
+
+graph: { title: "n49"  label: "Block 49" status:clustered color:yellow
+edge: {sourcename: "n49" targetname: "n48" label: "0" class:13 priority:60 color:red}
+edge: {sourcename: "n49" targetname: "n85" label: "1" class:13 priority:60 color:red}
+node: {title: "n91" label: "PhiM  91"  info1: "Phi 91
+  mode:    M
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 49
+     0:    Proj 43
+     1:    Proj 83
+  Private Attributes:
+  backedges:
+"
+color: green}
+edge: {sourcename: "n91" targetname: "n43" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n91" targetname: "n83" label: "1" class:17 priority:10 color:blue}
+node: {title: "n55" label: "ProjX 0 55"  info1: "Proj 55
+  mode:    X
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 49
+     0:    Cond 54
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n55" targetname: "n54" label: "0" class:13 priority:60 color:red}
+node: {title: "n56" label: "ProjX 1 56"  info1: "Proj 56
+  mode:    X
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 49
+     0:    Cond 54
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n56" targetname: "n54" label: "0" class:13 priority:60 color:red}
+node: {title: "n54" label: "Cond  54"  info1: "Cond 54
+  mode:    T
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 49
+     0:    Proj 53
+  Private Attributes:
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n54" targetname: "n53" label: "0" class:1  priority:50}
+node: {title: "n53" label: "Projb Gt 53"  info1: "Proj 53
+  mode:    b
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 49
+     0:    Cmp 52
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n53" targetname: "n52" label: "0" class:1  priority:50}
+node: {title: "n52" label: "Cmp  52"  info1: "Cmp 52
+  mode:    T
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 49
+     0:    0xA 51
+     1:    Phi 92
+  Private Attributes:
+"
+}
+node: {title: "n52n51" label: "0xAIs  51"  info1: "0xA 51
+  mode:    Is
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n52" targetname: "n52n51" label: "0" class:16 priority:10}
+edge: {sourcename: "n52" targetname: "n92" label: "1" class:1  priority:50}
+node: {title: "n92" label: "PhiIs  92"  info1: "Phi 92
+  mode:    Is
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 49
+     0:    0x0 47
+     1:    Add 84
+  Private Attributes:
+  backedges:
+"
+color: green}
+node: {title: "n92n47" label: "0x0Is  47"  info1: "0x0 47
+  mode:    Is
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n92" targetname: "n92n47" label: "0" class:16 priority:10}
+edge: {sourcename: "n92" targetname: "n84" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n46"  label: "Block 46" status:clustered color:yellow
+edge: {sourcename: "n46" targetname: "n40" label: "0" class:13 priority:60 color:red}
+node: {title: "n48" label: "Jmp  48"  info1: "Jmp 48
+  mode:    X
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 46
+  Private Attributes:
+"
+}
+}
+
+graph: { title: "n57"  label: "Block 57" status:clustered color:yellow
+edge: {sourcename: "n57" targetname: "n56" label: "0" class:13 priority:60 color:red}
+node: {title: "n83" label: "ProjM 0 83"  info1: "Proj 83
+  mode:    M
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 57
+     0:    Store 81
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n83" targetname: "n81" label: "0" class:17 priority:10 color:blue}
+node: {title: "n81" label: "Store  81"  info1: "Store 81
+  mode:    T
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   3
+  pred nodes:
+    -1:    Block 57
+     0:    Proj 76
+     1:    Add 65
+     2:    0xF 80
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n81n80" label: "0xFIs  80"  info1: "0xF 80
+  mode:    Is
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n81" targetname: "n76" label: "0" class:14 priority:50 color:blue}
+edge: {sourcename: "n81" targetname: "n65" label: "1" class:1  priority:50}
+edge: {sourcename: "n81" targetname: "n81n80" label: "2" class:16 priority:10}
+node: {title: "n76" label: "ProjM 0 76"  info1: "Proj 76
+  mode:    M
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 57
+     0:    Store 74
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n76" targetname: "n74" label: "0" class:17 priority:10 color:blue}
+node: {title: "n74" label: "Store  74"  info1: "Store 74
+  mode:    T
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   3
+  pred nodes:
+    -1:    Block 57
+     0:    Proj 72
+     1:    Add 67
+     2:    0x10 73
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n74n73" label: "0x10Is  73"  info1: "0x10 73
+  mode:    Is
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n74" targetname: "n72" label: "0" class:14 priority:50 color:blue}
+edge: {sourcename: "n74" targetname: "n67" label: "1" class:1  priority:50}
+edge: {sourcename: "n74" targetname: "n74n73" label: "2" class:16 priority:10}
+node: {title: "n72" label: "ProjM 0 72"  info1: "Proj 72
+  mode:    M
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 57
+     0:    Store 70
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n72" targetname: "n70" label: "0" class:17 priority:10 color:blue}
+node: {title: "n70" label: "Store  70"  info1: "Store 70
+  mode:    T
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   3
+  pred nodes:
+    -1:    Block 57
+     0:    Phi 91
+     1:    Add 65
+     2:    0x13 68
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n70n68" label: "0x13Is  68"  info1: "0x13 68
+  mode:    Is
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n70" targetname: "n91" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n70" targetname: "n65" label: "1" class:1  priority:50}
+edge: {sourcename: "n70" targetname: "n70n68" label: "2" class:16 priority:10}
+node: {title: "n67" label: "AddP  67"  info1: "Add 67
+  mode:    P
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 57
+     0:    SymC &a2 62
+     1:    Mul 66
+  Private Attributes:
+"
+}
+node: {title: "n67n62" label: "SymC &a2  62"  info1: "SymC &a2 62
+  mode:    P
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  kind:   addr_ent
+  entity: entity GlobalType.a2 (32)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n67" targetname: "n67n62" label: "0" class:16 priority:10}
+edge: {sourcename: "n67" targetname: "n66" label: "1" class:1  priority:50}
+node: {title: "n66" label: "MulIs  66"  info1: "Mul 66
+  mode:    Is
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 57
+     0:    0xC 60
+     1:    Phi 92
+  Private Attributes:
+"
+}
+node: {title: "n66n60" label: "0xCIs  60"  info1: "0xC 60
+  mode:    Is
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n66" targetname: "n66n60" label: "0" class:16 priority:10}
+edge: {sourcename: "n66" targetname: "n92" label: "1" class:16 priority:10}
+node: {title: "n65" label: "AddP  65"  info1: "Add 65
+  mode:    P
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 57
+     0:    SymC &a 61
+     1:    Mul 64
+  Private Attributes:
+"
+}
+node: {title: "n65n61" label: "SymC &a  61"  info1: "SymC &a 61
+  mode:    P
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  kind:   addr_ent
+  entity: entity GlobalType.a (31)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n65" targetname: "n65n61" label: "0" class:16 priority:10}
+edge: {sourcename: "n65" targetname: "n64" label: "1" class:1  priority:50}
+node: {title: "n64" label: "MulIs  64"  info1: "Mul 64
+  mode:    Is
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 57
+     0:    0x4 59
+     1:    Phi 92
+  Private Attributes:
+"
+}
+node: {title: "n64n59" label: "0x4Is  59"  info1: "0x4 59
+  mode:    Is
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n64" targetname: "n64n59" label: "0" class:16 priority:10}
+edge: {sourcename: "n64" targetname: "n92" label: "1" class:16 priority:10}
+node: {title: "n85" label: "Jmp  85"  info1: "Jmp 85
+  mode:    X
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 57
+  Private Attributes:
+"
+}
+node: {title: "n84" label: "AddIs  84"  info1: "Add 84
+  mode:    Is
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 57
+     0:    0x1 58
+     1:    Phi 92
+  Private Attributes:
+"
+}
+node: {title: "n84n58" label: "0x1Is  58"  info1: "0x1 58
+  mode:    Is
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n84" targetname: "n84n58" label: "0" class:16 priority:10}
+edge: {sourcename: "n84" targetname: "n92" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n103"  label: "Block 103" status:clustered color:yellow
+edge: {sourcename: "n103" targetname: "n100" label: "0" class:13 priority:60 color:red}
+node: {title: "n112" label: "ProjM 0 112"  info1: "Proj 112
+  mode:    M
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 103
+     0:    Store 110
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n112" targetname: "n110" label: "0" class:17 priority:10 color:blue}
+node: {title: "n110" label: "Store  110"  info1: "Store 110
+  mode:    T
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   3
+  pred nodes:
+    -1:    Block 103
+     0:    Phi 120
+     1:    Add 107
+     2:    0x13 68
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n110n68" label: "0x13Is  68"  info1: "0x13 68
+  mode:    Is
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n110" targetname: "n120" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n110" targetname: "n107" label: "1" class:1  priority:50}
+edge: {sourcename: "n110" targetname: "n110n68" label: "2" class:16 priority:10}
+node: {title: "n107" label: "AddP  107"  info1: "Add 107
+  mode:    P
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 103
+     0:    SymC &a 61
+     1:    Mul 106
+  Private Attributes:
+"
+}
+node: {title: "n107n61" label: "SymC &a  61"  info1: "SymC &a 61
+  mode:    P
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  kind:   addr_ent
+  entity: entity GlobalType.a (31)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n107" targetname: "n107n61" label: "0" class:16 priority:10}
+edge: {sourcename: "n107" targetname: "n106" label: "1" class:1  priority:50}
+node: {title: "n106" label: "MulIs  106"  info1: "Mul 106
+  mode:    Is
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 103
+     0:    0x4 59
+     1:    Phi 119
+  Private Attributes:
+"
+}
+node: {title: "n106n59" label: "0x4Is  59"  info1: "0x4 59
+  mode:    Is
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n106" targetname: "n106n59" label: "0" class:16 priority:10}
+edge: {sourcename: "n106" targetname: "n119" label: "1" class:16 priority:10}
+node: {title: "n113" label: "SubIs  113"  info1: "Sub 113
+  mode:    Is
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   2
+  pred nodes:
+    -1:    Block 103
+     0:    Phi 119
+     1:    0x1 58
+  Private Attributes:
+"
+}
+node: {title: "n113n58" label: "0x1Is  58"  info1: "0x1 58
+  mode:    Is
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n113" targetname: "n119" label: "0" class:16 priority:10}
+edge: {sourcename: "n113" targetname: "n113n58" label: "1" class:16 priority:10}
+node: {title: "n114" label: "Jmp  114"  info1: "Jmp 114
+  mode:    X
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 103
+  Private Attributes:
+"
+}
+}
+
+graph: { title: "n34"  label: "Block 34" status:clustered color:yellow
+edge: {sourcename: "n34" targetname: "n34n38" label: "0" class:13 priority:60 color:red}
+node: {title: "n35" label: "End  35"  info1: "End 35
+  mode:    X
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   3
+  pred nodes:
+    -1:    Block 34
+     0:    Phi 91
+     1:    Block 93
+     2:    Phi 120
+  Private Attributes:
+"
+color: blue}
+}
+node: {title: "n34n38" label: "Bad  38"  info1: "Bad 38
+  mode:    T
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+"
+}
+
+graph: { title: "n36"  label: "Block 36" status:clustered color:yellow
+edge: {sourcename: "n36" targetname: "n40" label: "0" class:13 priority:60 color:red}
+node: {title: "n43" label: "ProjM 1 43"  info1: "Proj 43
+  mode:    M
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 36
+     0:    Start 37
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n43" targetname: "n37" label: "0" class:17 priority:10 color:blue}
+node: {title: "n40" label: "ProjX 0 40"  info1: "Proj 40
+  mode:    X
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   1
+  pred nodes:
+    -1:    Block 36
+     0:    Start 37
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n40" targetname: "n37" label: "0" class:13 priority:60 color:red}
+node: {title: "n37" label: "Start  37"  info1: "Start 37
+  mode:    T
+  visited: 24
+  irg:     LOOP_UNROLL_EXAMPLE_m1
+  arity:   0
+  pred nodes:
+    -1:    Block 36
+  Private Attributes:
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+}
+
+}
+
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m2-loop-unrolling.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m2-loop-unrolling.vcg
new file mode 100644 (file)
index 0000000..6349674
--- /dev/null
@@ -0,0 +1,575 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m2"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+graph: { title: "g148" label: "LOOP_UNROLL_EXAMPLE_m2" status:clustered color:white
+graph: { title: "n137"  label: "Block 137" status:clustered color:yellow
+edge: {sourcename: "n137" targetname: "n183" label: "0" class:13 priority:60 color:red}
+node: {title: "n138" label: "End  138"  info1: "End 138
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 137
+     0:    Phi 187
+  Private Attributes:
+  in loop 543 with depth 0
+"
+color: blue}
+}
+
+graph: { title: "n180"  label: "Block 180" status:clustered color:yellow
+edge: {sourcename: "n180" targetname: "n159" label: "0" class:13 priority:60 color:red}
+node: {title: "n183" label: "Return  183"  info1: "Return 183
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 180
+     0:    Phi 187
+     1:    0x4 164
+  Private Attributes:
+  in loop 543 with depth 0
+  return in method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    res 0 type: int
+"
+}
+node: {title: "n183n164" label: "0x4Is  164"  info1: "0x4 164
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n183" targetname: "n187" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n183" targetname: "n183n164" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n153"  label: "Block 153" status:clustered color:yellow
+edge: {sourcename: "n153" targetname: "n152" label: "0" class:13 priority:60 color:red}
+backedge: {sourcename: "n153" targetname: "n552" label: "1" linestyle:dashed class:13 priority:60 color:red}
+node: {title: "n187" label: "PhiM  187"  info1: "Phi 187
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 153
+     0:    Proj 146
+     1:    Proj 550
+  Private Attributes:
+  backedges:
+  in loop 546 with depth 1
+"
+color: green}
+edge: {sourcename: "n187" targetname: "n146" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n187" targetname: "n550" label: "1" class:17 priority:10 color:blue}
+node: {title: "n159" label: "ProjX 0 159"  info1: "Proj 159
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 153
+     0:    Cond 158
+  Private Attributes:
+  in loop 543 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n159" targetname: "n158" label: "0" class:13 priority:60 color:red}
+node: {title: "n160" label: "ProjX 1 160"  info1: "Proj 160
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 153
+     0:    Cond 158
+  Private Attributes:
+  in loop 545 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n160" targetname: "n158" label: "0" class:13 priority:60 color:red}
+node: {title: "n158" label: "Cond  158"  info1: "Cond 158
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 153
+     0:    Proj 157
+  Private Attributes:
+  in loop 545 with depth 2
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n158" targetname: "n157" label: "0" class:1  priority:50}
+node: {title: "n157" label: "Projb Ge 157"  info1: "Proj 157
+  mode:    b
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 153
+     0:    Cmp 156
+  Private Attributes:
+  in loop 545 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n157" targetname: "n156" label: "0" class:1  priority:50}
+node: {title: "n156" label: "Cmp  156"  info1: "Cmp 156
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 153
+     0:    0xB 155
+     1:    Phi 188
+  Private Attributes:
+  in loop 545 with depth 2
+"
+}
+node: {title: "n156n155" label: "0xBIs  155"  info1: "0xB 155
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n156" targetname: "n156n155" label: "0" class:16 priority:10}
+edge: {sourcename: "n156" targetname: "n188" label: "1" class:1  priority:50}
+node: {title: "n188" label: "PhiIs  188"  info1: "Phi 188
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 153
+     0:    0x0 150
+     1:    Add 551
+  Private Attributes:
+  backedges:
+  in loop 544 with depth 1
+"
+color: green}
+node: {title: "n188n150" label: "0x0Is  150"  info1: "0x0 150
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n188" targetname: "n188n150" label: "0" class:16 priority:10}
+edge: {sourcename: "n188" targetname: "n551" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n149"  label: "Block 149" status:clustered color:yellow
+edge: {sourcename: "n149" targetname: "n143" label: "0" class:13 priority:60 color:red}
+node: {title: "n152" label: "Jmp  152"  info1: "Jmp 152
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 149
+  Private Attributes:
+  in loop 543 with depth 0
+"
+}
+}
+
+graph: { title: "n553"  label: "Block 553" status:clustered color:yellow
+edge: {sourcename: "n553" targetname: "n174" label: "0" class:13 priority:60 color:red}
+node: {title: "n550" label: "ProjM 0 550"  info1: "Proj 550
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 553
+     0:    Store 549
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n550" targetname: "n549" label: "0" class:17 priority:10 color:blue}
+node: {title: "n549" label: "Store  549"  info1: "Store 549
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   3
+  pred nodes:
+    -1:    Block 553
+     0:    Proj 172
+     1:    Add 555
+     2:    0xF 162
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n549n162" label: "0xFIs  162"  info1: "0xF 162
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n549" targetname: "n172" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n549" targetname: "n555" label: "1" class:1  priority:50}
+edge: {sourcename: "n549" targetname: "n549n162" label: "2" class:16 priority:10}
+node: {title: "n555" label: "AddP  555"  info1: "Add 555
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 553
+     0:    Mul 554
+     1:    SymC &a 151
+  Private Attributes:
+"
+}
+node: {title: "n555n151" label: "SymC &a  151"  info1: "SymC &a 151
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (135)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n555" targetname: "n554" label: "0" class:1  priority:50}
+edge: {sourcename: "n555" targetname: "n555n151" label: "1" class:16 priority:10}
+node: {title: "n554" label: "MulIs  554"  info1: "Mul 554
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 553
+     0:    0x4 164
+     1:    Add 173
+  Private Attributes:
+"
+}
+node: {title: "n554n164" label: "0x4Is  164"  info1: "0x4 164
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n554" targetname: "n554n164" label: "0" class:16 priority:10}
+edge: {sourcename: "n554" targetname: "n173" label: "1" class:16 priority:10}
+node: {title: "n552" label: "Jmp  552"  info1: "Jmp 552
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 553
+  Private Attributes:
+"
+}
+node: {title: "n551" label: "AddIs  551"  info1: "Add 551
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 553
+     0:    0x5 163
+     1:    Add 173
+  Private Attributes:
+"
+}
+node: {title: "n551n163" label: "0x5Is  163"  info1: "0x5 163
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n551" targetname: "n551n163" label: "0" class:16 priority:10}
+edge: {sourcename: "n551" targetname: "n173" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n161"  label: "Block 161" status:clustered color:yellow
+edge: {sourcename: "n161" targetname: "n160" label: "0" class:13 priority:60 color:red}
+node: {title: "n172" label: "ProjM 0 172"  info1: "Proj 172
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 161
+     0:    Store 170
+  Private Attributes:
+  in loop 546 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n172" targetname: "n170" label: "0" class:17 priority:10 color:blue}
+node: {title: "n170" label: "Store  170"  info1: "Store 170
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   3
+  pred nodes:
+    -1:    Block 161
+     0:    Phi 187
+     1:    Add 168
+     2:    0xF 162
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 546 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n170n162" label: "0xFIs  162"  info1: "0xF 162
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n170" targetname: "n187" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n170" targetname: "n168" label: "1" class:1  priority:50}
+edge: {sourcename: "n170" targetname: "n170n162" label: "2" class:16 priority:10}
+node: {title: "n168" label: "AddP  168"  info1: "Add 168
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 161
+     0:    Mul 166
+     1:    SymC &a 151
+  Private Attributes:
+  in loop 543 with depth 0
+"
+}
+node: {title: "n168n151" label: "SymC &a  151"  info1: "SymC &a 151
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (135)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n168" targetname: "n166" label: "0" class:1  priority:50}
+edge: {sourcename: "n168" targetname: "n168n151" label: "1" class:16 priority:10}
+node: {title: "n166" label: "MulIs  166"  info1: "Mul 166
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 161
+     0:    0x4 164
+     1:    Phi 188
+  Private Attributes:
+  in loop 543 with depth 0
+"
+}
+node: {title: "n166n164" label: "0x4Is  164"  info1: "0x4 164
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n166" targetname: "n166n164" label: "0" class:16 priority:10}
+edge: {sourcename: "n166" targetname: "n188" label: "1" class:16 priority:10}
+node: {title: "n174" label: "Jmp  174"  info1: "Jmp 174
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 161
+  Private Attributes:
+  in loop 545 with depth 2
+"
+}
+node: {title: "n173" label: "AddIs  173"  info1: "Add 173
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 161
+     0:    0x5 163
+     1:    Phi 188
+  Private Attributes:
+  in loop 544 with depth 1
+"
+}
+node: {title: "n173n163" label: "0x5Is  163"  info1: "0x5 163
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n173" targetname: "n173n163" label: "0" class:16 priority:10}
+edge: {sourcename: "n173" targetname: "n188" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n139"  label: "Block 139" status:clustered color:yellow
+edge: {sourcename: "n139" targetname: "n143" label: "0" class:13 priority:60 color:red}
+node: {title: "n146" label: "ProjM 1 146"  info1: "Proj 146
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 139
+     0:    Start 140
+  Private Attributes:
+  in loop 543 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n146" targetname: "n140" label: "0" class:17 priority:10 color:blue}
+node: {title: "n143" label: "ProjX 0 143"  info1: "Proj 143
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 139
+     0:    Start 140
+  Private Attributes:
+  in loop 543 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n143" targetname: "n140" label: "0" class:13 priority:60 color:red}
+node: {title: "n140" label: "Start  140"  info1: "Start 140
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+}
+
+}
+
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m2-looptree.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m2-looptree.vcg
new file mode 100644 (file)
index 0000000..92120ed
--- /dev/null
@@ -0,0 +1,69 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m2"
+display_edge_labels: yes
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: top_to_bottom
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+node: {title: "l547" label: "loop 0, 1 sons, 4 nodes"  info1: " loop nr: 547
+ The loop was analyzed 0 times."}
+node: { title: "l547-0-nodes" color: lightyellow label: "Block  139
+Block  149" }
+edge: {sourcename: "l547" targetname: "l547-0-nodes" label:"0...1"}
+edge: {sourcename: "l547" targetname: "l548" color: darkgreen label: "2"}
+node: {title: "l548" label: "loop 1, 0 sons, 2 nodes"  info1: " loop nr: 548
+ The loop was analyzed 0 times."}
+node: { title: "l548-0-nodes" color: lightyellow label: "Block  153     loop head!
+Block  161" }
+edge: {sourcename: "l548" targetname: "l548-0-nodes" label:"0...1"}
+node: { title: "l547-3-nodes" color: lightyellow label: "Block  180
+Block  137" }
+edge: {sourcename: "l547" targetname: "l547-3-nodes" label:"3...4"}
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m2-pure.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m2-pure.vcg
new file mode 100644 (file)
index 0000000..2ecf234
--- /dev/null
@@ -0,0 +1,521 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m2"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+node: {title: "n140" label: "Start  140"  info1: "Start 140
+  mode:    T
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+edge: { sourcename: "n140" targetname: "n139" class:2  priority:50 linestyle:dotted}
+node: {title: "n143" label: "ProjX 0 143"  info1: "Proj 143
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 139
+     0:    Start 140
+  Private Attributes:
+  in loop 543 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n143" targetname: "n140" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n143" targetname: "n139" class:2  priority:50 linestyle:dotted}
+node: {title: "n139" label: "Block  139"  info1: "Block 139
+  mode:    BB
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+     0:    Proj 143
+  Private Attributes:
+  backedges:
+  in loop 543 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n139" targetname: "n143" label: "0" class:13 priority:60 color:red}
+node: {title: "n173" label: "AddIs  173"  info1: "Add 173
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 161
+     0:    0x5 163
+     1:    Phi 188
+  Private Attributes:
+  in loop 544 with depth 1
+"
+}
+node: {title: "n173n163" label: "0x5Is  163"  info1: "0x5 163
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n173" targetname: "n173n163" label: "0" class:16 priority:10}
+edge: {sourcename: "n173" targetname: "n188" label: "1" class:16 priority:10}
+edge: { sourcename: "n173" targetname: "n161" class:2  priority:50 linestyle:dotted}
+node: {title: "n188" label: "PhiIs  188"  info1: "Phi 188
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 153
+     0:    0x0 150
+     1: be Add 173
+  Private Attributes:
+  backedges:  1
+  in loop 544 with depth 1
+"
+color: green}
+node: {title: "n188n150" label: "0x0Is  150"  info1: "0x0 150
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n188" targetname: "n188n150" label: "0" class:16 priority:10}
+backedge: {sourcename: "n188" targetname: "n173" label: "1" linestyle:dashed class:16 priority:10}
+edge: { sourcename: "n188" targetname: "n153" class:2  priority:50 linestyle:dotted}
+node: {title: "n156" label: "Cmp  156"  info1: "Cmp 156
+  mode:    T
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 153
+     0:    0xB 155
+     1:    Phi 188
+  Private Attributes:
+  in loop 545 with depth 2
+"
+}
+node: {title: "n156n155" label: "0xBIs  155"  info1: "0xB 155
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n156" targetname: "n156n155" label: "0" class:16 priority:10}
+edge: {sourcename: "n156" targetname: "n188" label: "1" class:1  priority:50}
+edge: { sourcename: "n156" targetname: "n153" class:2  priority:50 linestyle:dotted}
+node: {title: "n157" label: "Projb Ge 157"  info1: "Proj 157
+  mode:    b
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 153
+     0:    Cmp 156
+  Private Attributes:
+  in loop 545 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n157" targetname: "n156" label: "0" class:1  priority:50}
+edge: { sourcename: "n157" targetname: "n153" class:2  priority:50 linestyle:dotted}
+node: {title: "n158" label: "Cond  158"  info1: "Cond 158
+  mode:    T
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 153
+     0:    Proj 157
+  Private Attributes:
+  in loop 545 with depth 2
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n158" targetname: "n157" label: "0" class:1  priority:50}
+edge: { sourcename: "n158" targetname: "n153" class:2  priority:50 linestyle:dotted}
+node: {title: "n160" label: "ProjX 1 160"  info1: "Proj 160
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 153
+     0:    Cond 158
+  Private Attributes:
+  in loop 545 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n160" targetname: "n158" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n160" targetname: "n153" class:2  priority:50 linestyle:dotted}
+node: {title: "n161" label: "Block  161"  info1: "Block 161
+  mode:    BB
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+     0:    Proj 160
+  Private Attributes:
+  backedges:
+  in loop 545 with depth 2
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n161" targetname: "n160" label: "0" class:13 priority:60 color:red}
+node: {title: "n174" label: "Jmp  174"  info1: "Jmp 174
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 161
+  Private Attributes:
+  in loop 545 with depth 2
+"
+}
+edge: { sourcename: "n174" targetname: "n161" class:2  priority:50 linestyle:dotted}
+node: {title: "n149" label: "Block  149"  info1: "Block 149
+  mode:    BB
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+     0:    Proj 143
+  Private Attributes:
+  backedges:
+  in loop 543 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n149" targetname: "n143" label: "0" class:13 priority:60 color:red}
+node: {title: "n152" label: "Jmp  152"  info1: "Jmp 152
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 149
+  Private Attributes:
+  in loop 543 with depth 0
+"
+}
+edge: { sourcename: "n152" targetname: "n149" class:2  priority:50 linestyle:dotted}
+node: {title: "n153" label: "Block  153"  info1: "Block 153
+  mode:    BB
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+     0:    Jmp 152
+     1: be Jmp 174
+  Private Attributes:
+  backedges:  1
+  in loop 545 with depth 2
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n153" targetname: "n152" label: "0" class:13 priority:60 color:red}
+backedge: {sourcename: "n153" targetname: "n174" label: "1" linestyle:dashed class:13 priority:60 color:red}
+node: {title: "n159" label: "ProjX 0 159"  info1: "Proj 159
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 153
+     0:    Cond 158
+  Private Attributes:
+  in loop 543 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n159" targetname: "n158" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n159" targetname: "n153" class:2  priority:50 linestyle:dotted}
+node: {title: "n180" label: "Block  180"  info1: "Block 180
+  mode:    BB
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+     0:    Proj 159
+  Private Attributes:
+  backedges:
+  in loop 543 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n180" targetname: "n159" label: "0" class:13 priority:60 color:red}
+node: {title: "n166" label: "MulIs  166"  info1: "Mul 166
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 161
+     0:    0x4 164
+     1:    Phi 188
+  Private Attributes:
+  in loop 543 with depth 0
+"
+}
+node: {title: "n166n164" label: "0x4Is  164"  info1: "0x4 164
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n166" targetname: "n166n164" label: "0" class:16 priority:10}
+edge: {sourcename: "n166" targetname: "n188" label: "1" class:16 priority:10}
+edge: { sourcename: "n166" targetname: "n161" class:2  priority:50 linestyle:dotted}
+node: {title: "n168" label: "AddP  168"  info1: "Add 168
+  mode:    P
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 161
+     0:    Mul 166
+     1:    SymC &a 151
+  Private Attributes:
+  in loop 543 with depth 0
+"
+}
+node: {title: "n168n151" label: "SymC &a  151"  info1: "SymC &a 151
+  mode:    P
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (135)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n168" targetname: "n166" label: "0" class:1  priority:50}
+edge: {sourcename: "n168" targetname: "n168n151" label: "1" class:16 priority:10}
+edge: { sourcename: "n168" targetname: "n161" class:2  priority:50 linestyle:dotted}
+node: {title: "n170" label: "Store  170"  info1: "Store 170
+  mode:    T
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   3
+  pred nodes:
+    -1:    Block 161
+     0:    Phi 187
+     1:    Add 168
+     2:    0xF 162
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 546 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n170n162" label: "0xFIs  162"  info1: "0xF 162
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n170" targetname: "n187" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n170" targetname: "n168" label: "1" class:1  priority:50}
+edge: {sourcename: "n170" targetname: "n170n162" label: "2" class:16 priority:10}
+edge: { sourcename: "n170" targetname: "n161" class:2  priority:50 linestyle:dotted}
+node: {title: "n172" label: "ProjM 0 172"  info1: "Proj 172
+  mode:    M
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 161
+     0:    Store 170
+  Private Attributes:
+  in loop 546 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n172" targetname: "n170" label: "0" class:17 priority:10 color:blue}
+edge: { sourcename: "n172" targetname: "n161" class:2  priority:50 linestyle:dotted}
+node: {title: "n146" label: "ProjM 1 146"  info1: "Proj 146
+  mode:    M
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 139
+     0:    Start 140
+  Private Attributes:
+  in loop 543 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n146" targetname: "n140" label: "0" class:17 priority:10 color:blue}
+edge: { sourcename: "n146" targetname: "n139" class:2  priority:50 linestyle:dotted}
+node: {title: "n187" label: "PhiM  187"  info1: "Phi 187
+  mode:    M
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 153
+     0:    Proj 146
+     1: be Proj 172
+  Private Attributes:
+  backedges:  1
+  in loop 546 with depth 1
+"
+color: green}
+edge: {sourcename: "n187" targetname: "n146" label: "0" class:17 priority:10 color:blue}
+backedge: {sourcename: "n187" targetname: "n172" label: "1" linestyle:dashed class:17 priority:10 color:blue}
+edge: { sourcename: "n187" targetname: "n153" class:2  priority:50 linestyle:dotted}
+node: {title: "n183" label: "Return  183"  info1: "Return 183
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 180
+     0:    Phi 187
+     1:    0x4 164
+  Private Attributes:
+  in loop 543 with depth 0
+  return in method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    res 0 type: int
+"
+}
+node: {title: "n183n164" label: "0x4Is  164"  info1: "0x4 164
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  in loop 543 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n183" targetname: "n187" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n183" targetname: "n183n164" label: "1" class:16 priority:10}
+edge: { sourcename: "n183" targetname: "n180" class:2  priority:50 linestyle:dotted}
+node: {title: "n137" label: "Block  137"  info1: "Block 137
+  mode:    BB
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+     0:    Return 183
+  Private Attributes:
+  backedges:
+  in loop 543 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n137" targetname: "n183" label: "0" class:13 priority:60 color:red}
+node: {title: "n138" label: "End  138"  info1: "End 138
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 137
+     0:    Phi 187
+  Private Attributes:
+  in loop 543 with depth 0
+"
+color: blue}
+edge: { sourcename: "n138" targetname: "n137" class:2  priority:50 linestyle:dotted}
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m2.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m2.vcg
new file mode 100644 (file)
index 0000000..05e8434
--- /dev/null
@@ -0,0 +1,412 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m2"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+graph: { title: "g148" label: "LOOP_UNROLL_EXAMPLE_m2" status:clustered color:white
+graph: { title: "n137"  label: "Block 137" status:clustered color:yellow
+edge: {sourcename: "n137" targetname: "n183" label: "0" class:13 priority:60 color:red}
+node: {title: "n138" label: "End  138"  info1: "End 138
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 137
+     0:    Phi 187
+  Private Attributes:
+"
+color: blue}
+}
+
+graph: { title: "n180"  label: "Block 180" status:clustered color:yellow
+edge: {sourcename: "n180" targetname: "n159" label: "0" class:13 priority:60 color:red}
+node: {title: "n183" label: "Return  183"  info1: "Return 183
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 180
+     0:    Phi 187
+     1:    0x4 164
+  Private Attributes:
+  return in method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    res 0 type: int
+"
+}
+node: {title: "n183n164" label: "0x4Is  164"  info1: "0x4 164
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n183" targetname: "n187" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n183" targetname: "n183n164" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n153"  label: "Block 153" status:clustered color:yellow
+edge: {sourcename: "n153" targetname: "n152" label: "0" class:13 priority:60 color:red}
+edge: {sourcename: "n153" targetname: "n174" label: "1" class:13 priority:60 color:red}
+node: {title: "n187" label: "PhiM  187"  info1: "Phi 187
+  mode:    M
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 153
+     0:    Proj 146
+     1:    Proj 172
+  Private Attributes:
+  backedges:
+"
+color: green}
+edge: {sourcename: "n187" targetname: "n146" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n187" targetname: "n172" label: "1" class:17 priority:10 color:blue}
+node: {title: "n159" label: "ProjX 0 159"  info1: "Proj 159
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 153
+     0:    Cond 158
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n159" targetname: "n158" label: "0" class:13 priority:60 color:red}
+node: {title: "n160" label: "ProjX 1 160"  info1: "Proj 160
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 153
+     0:    Cond 158
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n160" targetname: "n158" label: "0" class:13 priority:60 color:red}
+node: {title: "n158" label: "Cond  158"  info1: "Cond 158
+  mode:    T
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 153
+     0:    Proj 157
+  Private Attributes:
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n158" targetname: "n157" label: "0" class:1  priority:50}
+node: {title: "n157" label: "Projb Ge 157"  info1: "Proj 157
+  mode:    b
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 153
+     0:    Cmp 156
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n157" targetname: "n156" label: "0" class:1  priority:50}
+node: {title: "n156" label: "Cmp  156"  info1: "Cmp 156
+  mode:    T
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 153
+     0:    0xB 155
+     1:    Phi 188
+  Private Attributes:
+"
+}
+node: {title: "n156n155" label: "0xBIs  155"  info1: "0xB 155
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n156" targetname: "n156n155" label: "0" class:16 priority:10}
+edge: {sourcename: "n156" targetname: "n188" label: "1" class:1  priority:50}
+node: {title: "n188" label: "PhiIs  188"  info1: "Phi 188
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 153
+     0:    0x0 150
+     1:    Add 173
+  Private Attributes:
+  backedges:
+"
+color: green}
+node: {title: "n188n150" label: "0x0Is  150"  info1: "0x0 150
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n188" targetname: "n188n150" label: "0" class:16 priority:10}
+edge: {sourcename: "n188" targetname: "n173" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n149"  label: "Block 149" status:clustered color:yellow
+edge: {sourcename: "n149" targetname: "n143" label: "0" class:13 priority:60 color:red}
+node: {title: "n152" label: "Jmp  152"  info1: "Jmp 152
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 149
+  Private Attributes:
+"
+}
+}
+
+graph: { title: "n161"  label: "Block 161" status:clustered color:yellow
+edge: {sourcename: "n161" targetname: "n160" label: "0" class:13 priority:60 color:red}
+node: {title: "n172" label: "ProjM 0 172"  info1: "Proj 172
+  mode:    M
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 161
+     0:    Store 170
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n172" targetname: "n170" label: "0" class:17 priority:10 color:blue}
+node: {title: "n170" label: "Store  170"  info1: "Store 170
+  mode:    T
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   3
+  pred nodes:
+    -1:    Block 161
+     0:    Phi 187
+     1:    Add 168
+     2:    0xF 162
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n170n162" label: "0xFIs  162"  info1: "0xF 162
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n170" targetname: "n187" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n170" targetname: "n168" label: "1" class:1  priority:50}
+edge: {sourcename: "n170" targetname: "n170n162" label: "2" class:16 priority:10}
+node: {title: "n168" label: "AddP  168"  info1: "Add 168
+  mode:    P
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 161
+     0:    Mul 166
+     1:    SymC &a 151
+  Private Attributes:
+"
+}
+node: {title: "n168n151" label: "SymC &a  151"  info1: "SymC &a 151
+  mode:    P
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  kind:   addr_ent
+  entity: entity GlobalType.a (135)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n168" targetname: "n166" label: "0" class:1  priority:50}
+edge: {sourcename: "n168" targetname: "n168n151" label: "1" class:16 priority:10}
+node: {title: "n166" label: "MulIs  166"  info1: "Mul 166
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 161
+     0:    0x4 164
+     1:    Phi 188
+  Private Attributes:
+"
+}
+node: {title: "n166n164" label: "0x4Is  164"  info1: "0x4 164
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n166" targetname: "n166n164" label: "0" class:16 priority:10}
+edge: {sourcename: "n166" targetname: "n188" label: "1" class:16 priority:10}
+node: {title: "n174" label: "Jmp  174"  info1: "Jmp 174
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 161
+  Private Attributes:
+"
+}
+node: {title: "n173" label: "AddIs  173"  info1: "Add 173
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   2
+  pred nodes:
+    -1:    Block 161
+     0:    0x5 163
+     1:    Phi 188
+  Private Attributes:
+"
+}
+node: {title: "n173n163" label: "0x5Is  163"  info1: "0x5 163
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n173" targetname: "n173n163" label: "0" class:16 priority:10}
+edge: {sourcename: "n173" targetname: "n188" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n139"  label: "Block 139" status:clustered color:yellow
+edge: {sourcename: "n139" targetname: "n143" label: "0" class:13 priority:60 color:red}
+node: {title: "n146" label: "ProjM 1 146"  info1: "Proj 146
+  mode:    M
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 139
+     0:    Start 140
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n146" targetname: "n140" label: "0" class:17 priority:10 color:blue}
+node: {title: "n143" label: "ProjX 0 143"  info1: "Proj 143
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   1
+  pred nodes:
+    -1:    Block 139
+     0:    Start 140
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n143" targetname: "n140" label: "0" class:13 priority:60 color:red}
+node: {title: "n140" label: "Start  140"  info1: "Start 140
+  mode:    T
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m2
+  arity:   0
+  pred nodes:
+    -1:    Block 139
+  Private Attributes:
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+}
+
+}
+
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m3-loop-unrolling.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m3-loop-unrolling.vcg
new file mode 100644 (file)
index 0000000..b0d8952
--- /dev/null
@@ -0,0 +1,739 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m3"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+graph: { title: "g210" label: "LOOP_UNROLL_EXAMPLE_m3" status:clustered color:white
+graph: { title: "n199"  label: "Block 199" status:clustered color:yellow
+edge: {sourcename: "n199" targetname: "n249" label: "0" class:13 priority:60 color:red}
+node: {title: "n200" label: "End  200"  info1: "End 200
+  mode:    X
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 199
+     0:    Phi 253
+  Private Attributes:
+  in loop 556 with depth 0
+"
+color: blue}
+}
+
+graph: { title: "n246"  label: "Block 246" status:clustered color:yellow
+edge: {sourcename: "n246" targetname: "n221" label: "0" class:13 priority:60 color:red}
+node: {title: "n249" label: "Return  249"  info1: "Return 249
+  mode:    X
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 246
+     0:    Phi 253
+     1:    0x4 225
+  Private Attributes:
+  in loop 556 with depth 0
+  return in method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    res 0 type: int
+"
+}
+node: {title: "n249n225" label: "0x4Is  225"  info1: "0x4 225
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n249" targetname: "n253" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n249" targetname: "n249n225" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n215"  label: "Block 215" status:clustered color:yellow
+edge: {sourcename: "n215" targetname: "n214" label: "0" class:13 priority:60 color:red}
+backedge: {sourcename: "n215" targetname: "n570" label: "1" linestyle:dashed class:13 priority:60 color:red}
+node: {title: "n253" label: "PhiM  253"  info1: "Phi 253
+  mode:    M
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 215
+     0:    Proj 208
+     1:    Proj 568
+  Private Attributes:
+  backedges:
+  in loop 559 with depth 1
+"
+color: green}
+edge: {sourcename: "n253" targetname: "n208" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n253" targetname: "n568" label: "1" class:17 priority:10 color:blue}
+node: {title: "n221" label: "ProjX 0 221"  info1: "Proj 221
+  mode:    X
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 215
+     0:    Cond 220
+  Private Attributes:
+  in loop 556 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n221" targetname: "n220" label: "0" class:13 priority:60 color:red}
+node: {title: "n222" label: "ProjX 1 222"  info1: "Proj 222
+  mode:    X
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 215
+     0:    Cond 220
+  Private Attributes:
+  in loop 558 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n222" targetname: "n220" label: "0" class:13 priority:60 color:red}
+node: {title: "n220" label: "Cond  220"  info1: "Cond 220
+  mode:    T
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 215
+     0:    Proj 219
+  Private Attributes:
+  in loop 558 with depth 2
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n220" targetname: "n219" label: "0" class:1  priority:50}
+node: {title: "n219" label: "Projb Lt 219"  info1: "Proj 219
+  mode:    b
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 215
+     0:    Cmp 218
+  Private Attributes:
+  in loop 558 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n219" targetname: "n218" label: "0" class:1  priority:50}
+node: {title: "n218" label: "Cmp  218"  info1: "Cmp 218
+  mode:    T
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 215
+     0:    0x0 217
+     1:    Phi 254
+  Private Attributes:
+  in loop 558 with depth 2
+"
+}
+node: {title: "n218n217" label: "0x0Is  217"  info1: "0x0 217
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n218" targetname: "n218n217" label: "0" class:16 priority:10}
+edge: {sourcename: "n218" targetname: "n254" label: "1" class:1  priority:50}
+node: {title: "n254" label: "PhiIs  254"  info1: "Phi 254
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 215
+     0:    0xA 212
+     1:    Sub 569
+  Private Attributes:
+  backedges:
+  in loop 557 with depth 1
+"
+color: green}
+node: {title: "n254n212" label: "0xAIs  212"  info1: "0xA 212
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n254" targetname: "n254n212" label: "0" class:16 priority:10}
+edge: {sourcename: "n254" targetname: "n569" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n211"  label: "Block 211" status:clustered color:yellow
+edge: {sourcename: "n211" targetname: "n205" label: "0" class:13 priority:60 color:red}
+node: {title: "n214" label: "Jmp  214"  info1: "Jmp 214
+  mode:    X
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 211
+  Private Attributes:
+  in loop 556 with depth 0
+"
+}
+}
+
+graph: { title: "n571"  label: "Block 571" status:clustered color:yellow
+edge: {sourcename: "n571" targetname: "n240" label: "0" class:13 priority:60 color:red}
+node: {title: "n568" label: "ProjM 0 568"  info1: "Proj 568
+  mode:    M
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 571
+     0:    Store 567
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n568" targetname: "n567" label: "0" class:17 priority:10 color:blue}
+node: {title: "n567" label: "Store  567"  info1: "Store 567
+  mode:    T
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   3
+  pred nodes:
+    -1:    Block 571
+     0:    Proj 238
+     1:    Add 566
+     2:    Sub 239
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n567" targetname: "n238" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n567" targetname: "n566" label: "1" class:1  priority:50}
+edge: {sourcename: "n567" targetname: "n239" label: "2" class:16 priority:10}
+node: {title: "n566" label: "AddP  566"  info1: "Add 566
+  mode:    P
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 571
+     0:    Add 564
+     1:    Add 565
+  Private Attributes:
+"
+}
+edge: {sourcename: "n566" targetname: "n564" label: "0" class:1  priority:50}
+edge: {sourcename: "n566" targetname: "n565" label: "1" class:1  priority:50}
+node: {title: "n565" label: "AddP  565"  info1: "Add 565
+  mode:    P
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 571
+     0:    0x8 226
+     1:    Add 564
+  Private Attributes:
+"
+}
+node: {title: "n565n226" label: "0x8Is  226"  info1: "0x8 226
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n565" targetname: "n565n226" label: "0" class:16 priority:10}
+edge: {sourcename: "n565" targetname: "n564" label: "1" class:1  priority:50}
+node: {title: "n564" label: "AddP  564"  info1: "Add 564
+  mode:    P
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 571
+     0:    0x8 226
+     1:    Add 563
+  Private Attributes:
+"
+}
+node: {title: "n564n226" label: "0x8Is  226"  info1: "0x8 226
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n564" targetname: "n564n226" label: "0" class:16 priority:10}
+edge: {sourcename: "n564" targetname: "n563" label: "1" class:1  priority:50}
+node: {title: "n563" label: "AddP  563"  info1: "Add 563
+  mode:    P
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 571
+     0:    0x4 225
+     1:    Add 562
+  Private Attributes:
+"
+}
+node: {title: "n563n225" label: "0x4Is  225"  info1: "0x4 225
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n563" targetname: "n563n225" label: "0" class:16 priority:10}
+edge: {sourcename: "n563" targetname: "n562" label: "1" class:1  priority:50}
+node: {title: "n562" label: "AddP  562"  info1: "Add 562
+  mode:    P
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 571
+     0:    Mul 572
+     1:    SymC &a 213
+  Private Attributes:
+"
+}
+node: {title: "n562n213" label: "SymC &a  213"  info1: "SymC &a 213
+  mode:    P
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (197)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n562" targetname: "n572" label: "0" class:1  priority:50}
+edge: {sourcename: "n562" targetname: "n562n213" label: "1" class:16 priority:10}
+node: {title: "n572" label: "MulIs  572"  info1: "Mul 572
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 571
+     0:    0x4 225
+     1:    Sub 239
+  Private Attributes:
+"
+}
+node: {title: "n572n225" label: "0x4Is  225"  info1: "0x4 225
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n572" targetname: "n572n225" label: "0" class:16 priority:10}
+edge: {sourcename: "n572" targetname: "n239" label: "1" class:16 priority:10}
+node: {title: "n570" label: "Jmp  570"  info1: "Jmp 570
+  mode:    X
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 571
+  Private Attributes:
+"
+}
+node: {title: "n569" label: "SubIs  569"  info1: "Sub 569
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 571
+     0:    Sub 239
+     1:    0x1 224
+  Private Attributes:
+"
+}
+node: {title: "n569n224" label: "0x1Is  224"  info1: "0x1 224
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n569" targetname: "n239" label: "0" class:16 priority:10}
+edge: {sourcename: "n569" targetname: "n569n224" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n223"  label: "Block 223" status:clustered color:yellow
+edge: {sourcename: "n223" targetname: "n222" label: "0" class:13 priority:60 color:red}
+node: {title: "n238" label: "ProjM 0 238"  info1: "Proj 238
+  mode:    M
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 223
+     0:    Store 236
+  Private Attributes:
+  in loop 559 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n238" targetname: "n236" label: "0" class:17 priority:10 color:blue}
+node: {title: "n236" label: "Store  236"  info1: "Store 236
+  mode:    T
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   3
+  pred nodes:
+    -1:    Block 223
+     0:    Phi 253
+     1:    Add 234
+     2:    Phi 254
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 559 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n236" targetname: "n253" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n236" targetname: "n234" label: "1" class:1  priority:50}
+edge: {sourcename: "n236" targetname: "n254" label: "2" class:16 priority:10}
+node: {title: "n234" label: "AddP  234"  info1: "Add 234
+  mode:    P
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    Add 232
+     1:    Add 233
+  Private Attributes:
+  in loop 556 with depth 0
+"
+}
+edge: {sourcename: "n234" targetname: "n232" label: "0" class:1  priority:50}
+edge: {sourcename: "n234" targetname: "n233" label: "1" class:1  priority:50}
+node: {title: "n233" label: "AddP  233"  info1: "Add 233
+  mode:    P
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    0x8 226
+     1:    Add 232
+  Private Attributes:
+  in loop 556 with depth 0
+"
+}
+node: {title: "n233n226" label: "0x8Is  226"  info1: "0x8 226
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n233" targetname: "n233n226" label: "0" class:16 priority:10}
+edge: {sourcename: "n233" targetname: "n232" label: "1" class:1  priority:50}
+node: {title: "n232" label: "AddP  232"  info1: "Add 232
+  mode:    P
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    0x8 226
+     1:    Add 231
+  Private Attributes:
+  in loop 556 with depth 0
+"
+}
+node: {title: "n232n226" label: "0x8Is  226"  info1: "0x8 226
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n232" targetname: "n232n226" label: "0" class:16 priority:10}
+edge: {sourcename: "n232" targetname: "n231" label: "1" class:1  priority:50}
+node: {title: "n231" label: "AddP  231"  info1: "Add 231
+  mode:    P
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    0x4 225
+     1:    Add 230
+  Private Attributes:
+  in loop 556 with depth 0
+"
+}
+node: {title: "n231n225" label: "0x4Is  225"  info1: "0x4 225
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n231" targetname: "n231n225" label: "0" class:16 priority:10}
+edge: {sourcename: "n231" targetname: "n230" label: "1" class:1  priority:50}
+node: {title: "n230" label: "AddP  230"  info1: "Add 230
+  mode:    P
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    Mul 228
+     1:    SymC &a 213
+  Private Attributes:
+  in loop 556 with depth 0
+"
+}
+node: {title: "n230n213" label: "SymC &a  213"  info1: "SymC &a 213
+  mode:    P
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (197)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n230" targetname: "n228" label: "0" class:1  priority:50}
+edge: {sourcename: "n230" targetname: "n230n213" label: "1" class:16 priority:10}
+node: {title: "n228" label: "MulIs  228"  info1: "Mul 228
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    0x4 225
+     1:    Phi 254
+  Private Attributes:
+  in loop 556 with depth 0
+"
+}
+node: {title: "n228n225" label: "0x4Is  225"  info1: "0x4 225
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n228" targetname: "n228n225" label: "0" class:16 priority:10}
+edge: {sourcename: "n228" targetname: "n254" label: "1" class:16 priority:10}
+node: {title: "n240" label: "Jmp  240"  info1: "Jmp 240
+  mode:    X
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 223
+  Private Attributes:
+  in loop 558 with depth 2
+"
+}
+node: {title: "n239" label: "SubIs  239"  info1: "Sub 239
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    Phi 254
+     1:    0x1 224
+  Private Attributes:
+  in loop 557 with depth 1
+"
+}
+node: {title: "n239n224" label: "0x1Is  224"  info1: "0x1 224
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n239" targetname: "n254" label: "0" class:16 priority:10}
+edge: {sourcename: "n239" targetname: "n239n224" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n201"  label: "Block 201" status:clustered color:yellow
+edge: {sourcename: "n201" targetname: "n205" label: "0" class:13 priority:60 color:red}
+node: {title: "n208" label: "ProjM 1 208"  info1: "Proj 208
+  mode:    M
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 201
+     0:    Start 202
+  Private Attributes:
+  in loop 556 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n208" targetname: "n202" label: "0" class:17 priority:10 color:blue}
+node: {title: "n205" label: "ProjX 0 205"  info1: "Proj 205
+  mode:    X
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 201
+     0:    Start 202
+  Private Attributes:
+  in loop 556 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n205" targetname: "n202" label: "0" class:13 priority:60 color:red}
+node: {title: "n202" label: "Start  202"  info1: "Start 202
+  mode:    T
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+}
+
+}
+
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m3-looptree.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m3-looptree.vcg
new file mode 100644 (file)
index 0000000..3b342a4
--- /dev/null
@@ -0,0 +1,69 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m3"
+display_edge_labels: yes
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: top_to_bottom
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+node: {title: "l560" label: "loop 0, 1 sons, 4 nodes"  info1: " loop nr: 560
+ The loop was analyzed 0 times."}
+node: { title: "l560-0-nodes" color: lightyellow label: "Block  201
+Block  211" }
+edge: {sourcename: "l560" targetname: "l560-0-nodes" label:"0...1"}
+edge: {sourcename: "l560" targetname: "l561" color: darkgreen label: "2"}
+node: {title: "l561" label: "loop 1, 0 sons, 2 nodes"  info1: " loop nr: 561
+ The loop was analyzed 0 times."}
+node: { title: "l561-0-nodes" color: lightyellow label: "Block  215     loop head!
+Block  223" }
+edge: {sourcename: "l561" targetname: "l561-0-nodes" label:"0...1"}
+node: { title: "l560-3-nodes" color: lightyellow label: "Block  246
+Block  199" }
+edge: {sourcename: "l560" targetname: "l560-3-nodes" label:"3...4"}
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m3-pure.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m3-pure.vcg
new file mode 100644 (file)
index 0000000..d291cd4
--- /dev/null
@@ -0,0 +1,609 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m3"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+node: {title: "n202" label: "Start  202"  info1: "Start 202
+  mode:    T
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+edge: { sourcename: "n202" targetname: "n201" class:2  priority:50 linestyle:dotted}
+node: {title: "n205" label: "ProjX 0 205"  info1: "Proj 205
+  mode:    X
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 201
+     0:    Start 202
+  Private Attributes:
+  in loop 556 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n205" targetname: "n202" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n205" targetname: "n201" class:2  priority:50 linestyle:dotted}
+node: {title: "n201" label: "Block  201"  info1: "Block 201
+  mode:    BB
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+     0:    Proj 205
+  Private Attributes:
+  backedges:
+  in loop 556 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n201" targetname: "n205" label: "0" class:13 priority:60 color:red}
+node: {title: "n239" label: "SubIs  239"  info1: "Sub 239
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    Phi 254
+     1:    0x1 224
+  Private Attributes:
+  in loop 557 with depth 1
+"
+}
+node: {title: "n239n224" label: "0x1Is  224"  info1: "0x1 224
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n239" targetname: "n254" label: "0" class:16 priority:10}
+edge: {sourcename: "n239" targetname: "n239n224" label: "1" class:16 priority:10}
+edge: { sourcename: "n239" targetname: "n223" class:2  priority:50 linestyle:dotted}
+node: {title: "n254" label: "PhiIs  254"  info1: "Phi 254
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 215
+     0:    0xA 212
+     1: be Sub 239
+  Private Attributes:
+  backedges:  1
+  in loop 557 with depth 1
+"
+color: green}
+node: {title: "n254n212" label: "0xAIs  212"  info1: "0xA 212
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n254" targetname: "n254n212" label: "0" class:16 priority:10}
+backedge: {sourcename: "n254" targetname: "n239" label: "1" linestyle:dashed class:16 priority:10}
+edge: { sourcename: "n254" targetname: "n215" class:2  priority:50 linestyle:dotted}
+node: {title: "n218" label: "Cmp  218"  info1: "Cmp 218
+  mode:    T
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 215
+     0:    0x0 217
+     1:    Phi 254
+  Private Attributes:
+  in loop 558 with depth 2
+"
+}
+node: {title: "n218n217" label: "0x0Is  217"  info1: "0x0 217
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n218" targetname: "n218n217" label: "0" class:16 priority:10}
+edge: {sourcename: "n218" targetname: "n254" label: "1" class:1  priority:50}
+edge: { sourcename: "n218" targetname: "n215" class:2  priority:50 linestyle:dotted}
+node: {title: "n219" label: "Projb Lt 219"  info1: "Proj 219
+  mode:    b
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 215
+     0:    Cmp 218
+  Private Attributes:
+  in loop 558 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n219" targetname: "n218" label: "0" class:1  priority:50}
+edge: { sourcename: "n219" targetname: "n215" class:2  priority:50 linestyle:dotted}
+node: {title: "n220" label: "Cond  220"  info1: "Cond 220
+  mode:    T
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 215
+     0:    Proj 219
+  Private Attributes:
+  in loop 558 with depth 2
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n220" targetname: "n219" label: "0" class:1  priority:50}
+edge: { sourcename: "n220" targetname: "n215" class:2  priority:50 linestyle:dotted}
+node: {title: "n222" label: "ProjX 1 222"  info1: "Proj 222
+  mode:    X
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 215
+     0:    Cond 220
+  Private Attributes:
+  in loop 558 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n222" targetname: "n220" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n222" targetname: "n215" class:2  priority:50 linestyle:dotted}
+node: {title: "n223" label: "Block  223"  info1: "Block 223
+  mode:    BB
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+     0:    Proj 222
+  Private Attributes:
+  backedges:
+  in loop 558 with depth 2
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n223" targetname: "n222" label: "0" class:13 priority:60 color:red}
+node: {title: "n240" label: "Jmp  240"  info1: "Jmp 240
+  mode:    X
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 223
+  Private Attributes:
+  in loop 558 with depth 2
+"
+}
+edge: { sourcename: "n240" targetname: "n223" class:2  priority:50 linestyle:dotted}
+node: {title: "n211" label: "Block  211"  info1: "Block 211
+  mode:    BB
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+     0:    Proj 205
+  Private Attributes:
+  backedges:
+  in loop 556 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n211" targetname: "n205" label: "0" class:13 priority:60 color:red}
+node: {title: "n214" label: "Jmp  214"  info1: "Jmp 214
+  mode:    X
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 211
+  Private Attributes:
+  in loop 556 with depth 0
+"
+}
+edge: { sourcename: "n214" targetname: "n211" class:2  priority:50 linestyle:dotted}
+node: {title: "n215" label: "Block  215"  info1: "Block 215
+  mode:    BB
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+     0:    Jmp 214
+     1: be Jmp 240
+  Private Attributes:
+  backedges:  1
+  in loop 558 with depth 2
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n215" targetname: "n214" label: "0" class:13 priority:60 color:red}
+backedge: {sourcename: "n215" targetname: "n240" label: "1" linestyle:dashed class:13 priority:60 color:red}
+node: {title: "n221" label: "ProjX 0 221"  info1: "Proj 221
+  mode:    X
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 215
+     0:    Cond 220
+  Private Attributes:
+  in loop 556 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n221" targetname: "n220" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n221" targetname: "n215" class:2  priority:50 linestyle:dotted}
+node: {title: "n246" label: "Block  246"  info1: "Block 246
+  mode:    BB
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+     0:    Proj 221
+  Private Attributes:
+  backedges:
+  in loop 556 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n246" targetname: "n221" label: "0" class:13 priority:60 color:red}
+node: {title: "n228" label: "MulIs  228"  info1: "Mul 228
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    0x4 225
+     1:    Phi 254
+  Private Attributes:
+  in loop 556 with depth 0
+"
+}
+node: {title: "n228n225" label: "0x4Is  225"  info1: "0x4 225
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n228" targetname: "n228n225" label: "0" class:16 priority:10}
+edge: {sourcename: "n228" targetname: "n254" label: "1" class:16 priority:10}
+edge: { sourcename: "n228" targetname: "n223" class:2  priority:50 linestyle:dotted}
+node: {title: "n230" label: "AddP  230"  info1: "Add 230
+  mode:    P
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    Mul 228
+     1:    SymC &a 213
+  Private Attributes:
+  in loop 556 with depth 0
+"
+}
+node: {title: "n230n213" label: "SymC &a  213"  info1: "SymC &a 213
+  mode:    P
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (197)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n230" targetname: "n228" label: "0" class:1  priority:50}
+edge: {sourcename: "n230" targetname: "n230n213" label: "1" class:16 priority:10}
+edge: { sourcename: "n230" targetname: "n223" class:2  priority:50 linestyle:dotted}
+node: {title: "n231" label: "AddP  231"  info1: "Add 231
+  mode:    P
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    0x4 225
+     1:    Add 230
+  Private Attributes:
+  in loop 556 with depth 0
+"
+}
+node: {title: "n231n225" label: "0x4Is  225"  info1: "0x4 225
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n231" targetname: "n231n225" label: "0" class:16 priority:10}
+edge: {sourcename: "n231" targetname: "n230" label: "1" class:1  priority:50}
+edge: { sourcename: "n231" targetname: "n223" class:2  priority:50 linestyle:dotted}
+node: {title: "n232" label: "AddP  232"  info1: "Add 232
+  mode:    P
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    0x8 226
+     1:    Add 231
+  Private Attributes:
+  in loop 556 with depth 0
+"
+}
+node: {title: "n232n226" label: "0x8Is  226"  info1: "0x8 226
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n232" targetname: "n232n226" label: "0" class:16 priority:10}
+edge: {sourcename: "n232" targetname: "n231" label: "1" class:1  priority:50}
+edge: { sourcename: "n232" targetname: "n223" class:2  priority:50 linestyle:dotted}
+node: {title: "n233" label: "AddP  233"  info1: "Add 233
+  mode:    P
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    0x8 226
+     1:    Add 232
+  Private Attributes:
+  in loop 556 with depth 0
+"
+}
+node: {title: "n233n226" label: "0x8Is  226"  info1: "0x8 226
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n233" targetname: "n233n226" label: "0" class:16 priority:10}
+edge: {sourcename: "n233" targetname: "n232" label: "1" class:1  priority:50}
+edge: { sourcename: "n233" targetname: "n223" class:2  priority:50 linestyle:dotted}
+node: {title: "n234" label: "AddP  234"  info1: "Add 234
+  mode:    P
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    Add 232
+     1:    Add 233
+  Private Attributes:
+  in loop 556 with depth 0
+"
+}
+edge: {sourcename: "n234" targetname: "n232" label: "0" class:1  priority:50}
+edge: {sourcename: "n234" targetname: "n233" label: "1" class:1  priority:50}
+edge: { sourcename: "n234" targetname: "n223" class:2  priority:50 linestyle:dotted}
+node: {title: "n236" label: "Store  236"  info1: "Store 236
+  mode:    T
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   3
+  pred nodes:
+    -1:    Block 223
+     0:    Phi 253
+     1:    Add 234
+     2:    Phi 254
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 559 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n236" targetname: "n253" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n236" targetname: "n234" label: "1" class:1  priority:50}
+edge: {sourcename: "n236" targetname: "n254" label: "2" class:16 priority:10}
+edge: { sourcename: "n236" targetname: "n223" class:2  priority:50 linestyle:dotted}
+node: {title: "n238" label: "ProjM 0 238"  info1: "Proj 238
+  mode:    M
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 223
+     0:    Store 236
+  Private Attributes:
+  in loop 559 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n238" targetname: "n236" label: "0" class:17 priority:10 color:blue}
+edge: { sourcename: "n238" targetname: "n223" class:2  priority:50 linestyle:dotted}
+node: {title: "n208" label: "ProjM 1 208"  info1: "Proj 208
+  mode:    M
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 201
+     0:    Start 202
+  Private Attributes:
+  in loop 556 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n208" targetname: "n202" label: "0" class:17 priority:10 color:blue}
+edge: { sourcename: "n208" targetname: "n201" class:2  priority:50 linestyle:dotted}
+node: {title: "n253" label: "PhiM  253"  info1: "Phi 253
+  mode:    M
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 215
+     0:    Proj 208
+     1: be Proj 238
+  Private Attributes:
+  backedges:  1
+  in loop 559 with depth 1
+"
+color: green}
+edge: {sourcename: "n253" targetname: "n208" label: "0" class:17 priority:10 color:blue}
+backedge: {sourcename: "n253" targetname: "n238" label: "1" linestyle:dashed class:17 priority:10 color:blue}
+edge: { sourcename: "n253" targetname: "n215" class:2  priority:50 linestyle:dotted}
+node: {title: "n249" label: "Return  249"  info1: "Return 249
+  mode:    X
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 246
+     0:    Phi 253
+     1:    0x4 225
+  Private Attributes:
+  in loop 556 with depth 0
+  return in method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    res 0 type: int
+"
+}
+node: {title: "n249n225" label: "0x4Is  225"  info1: "0x4 225
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  in loop 556 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n249" targetname: "n253" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n249" targetname: "n249n225" label: "1" class:16 priority:10}
+edge: { sourcename: "n249" targetname: "n246" class:2  priority:50 linestyle:dotted}
+node: {title: "n199" label: "Block  199"  info1: "Block 199
+  mode:    BB
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+     0:    Return 249
+  Private Attributes:
+  backedges:
+  in loop 556 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n199" targetname: "n249" label: "0" class:13 priority:60 color:red}
+node: {title: "n200" label: "End  200"  info1: "End 200
+  mode:    X
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 199
+     0:    Phi 253
+  Private Attributes:
+  in loop 556 with depth 0
+"
+color: blue}
+edge: { sourcename: "n200" targetname: "n199" class:2  priority:50 linestyle:dotted}
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m3.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m3.vcg
new file mode 100644 (file)
index 0000000..ed0175e
--- /dev/null
@@ -0,0 +1,490 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m3"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+graph: { title: "g210" label: "LOOP_UNROLL_EXAMPLE_m3" status:clustered color:white
+graph: { title: "n199"  label: "Block 199" status:clustered color:yellow
+edge: {sourcename: "n199" targetname: "n249" label: "0" class:13 priority:60 color:red}
+node: {title: "n200" label: "End  200"  info1: "End 200
+  mode:    X
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 199
+     0:    Phi 253
+  Private Attributes:
+"
+color: blue}
+}
+
+graph: { title: "n246"  label: "Block 246" status:clustered color:yellow
+edge: {sourcename: "n246" targetname: "n221" label: "0" class:13 priority:60 color:red}
+node: {title: "n249" label: "Return  249"  info1: "Return 249
+  mode:    X
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 246
+     0:    Phi 253
+     1:    0x4 225
+  Private Attributes:
+  return in method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    res 0 type: int
+"
+}
+node: {title: "n249n225" label: "0x4Is  225"  info1: "0x4 225
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n249" targetname: "n253" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n249" targetname: "n249n225" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n215"  label: "Block 215" status:clustered color:yellow
+edge: {sourcename: "n215" targetname: "n214" label: "0" class:13 priority:60 color:red}
+edge: {sourcename: "n215" targetname: "n240" label: "1" class:13 priority:60 color:red}
+node: {title: "n253" label: "PhiM  253"  info1: "Phi 253
+  mode:    M
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 215
+     0:    Proj 208
+     1:    Proj 238
+  Private Attributes:
+  backedges:
+"
+color: green}
+edge: {sourcename: "n253" targetname: "n208" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n253" targetname: "n238" label: "1" class:17 priority:10 color:blue}
+node: {title: "n221" label: "ProjX 0 221"  info1: "Proj 221
+  mode:    X
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 215
+     0:    Cond 220
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n221" targetname: "n220" label: "0" class:13 priority:60 color:red}
+node: {title: "n222" label: "ProjX 1 222"  info1: "Proj 222
+  mode:    X
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 215
+     0:    Cond 220
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n222" targetname: "n220" label: "0" class:13 priority:60 color:red}
+node: {title: "n220" label: "Cond  220"  info1: "Cond 220
+  mode:    T
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 215
+     0:    Proj 219
+  Private Attributes:
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n220" targetname: "n219" label: "0" class:1  priority:50}
+node: {title: "n219" label: "Projb Lt 219"  info1: "Proj 219
+  mode:    b
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 215
+     0:    Cmp 218
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n219" targetname: "n218" label: "0" class:1  priority:50}
+node: {title: "n218" label: "Cmp  218"  info1: "Cmp 218
+  mode:    T
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 215
+     0:    0x0 217
+     1:    Phi 254
+  Private Attributes:
+"
+}
+node: {title: "n218n217" label: "0x0Is  217"  info1: "0x0 217
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n218" targetname: "n218n217" label: "0" class:16 priority:10}
+edge: {sourcename: "n218" targetname: "n254" label: "1" class:1  priority:50}
+node: {title: "n254" label: "PhiIs  254"  info1: "Phi 254
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 215
+     0:    0xA 212
+     1:    Sub 239
+  Private Attributes:
+  backedges:
+"
+color: green}
+node: {title: "n254n212" label: "0xAIs  212"  info1: "0xA 212
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n254" targetname: "n254n212" label: "0" class:16 priority:10}
+edge: {sourcename: "n254" targetname: "n239" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n211"  label: "Block 211" status:clustered color:yellow
+edge: {sourcename: "n211" targetname: "n205" label: "0" class:13 priority:60 color:red}
+node: {title: "n214" label: "Jmp  214"  info1: "Jmp 214
+  mode:    X
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 211
+  Private Attributes:
+"
+}
+}
+
+graph: { title: "n223"  label: "Block 223" status:clustered color:yellow
+edge: {sourcename: "n223" targetname: "n222" label: "0" class:13 priority:60 color:red}
+node: {title: "n238" label: "ProjM 0 238"  info1: "Proj 238
+  mode:    M
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 223
+     0:    Store 236
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n238" targetname: "n236" label: "0" class:17 priority:10 color:blue}
+node: {title: "n236" label: "Store  236"  info1: "Store 236
+  mode:    T
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   3
+  pred nodes:
+    -1:    Block 223
+     0:    Phi 253
+     1:    Add 234
+     2:    Phi 254
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n236" targetname: "n253" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n236" targetname: "n234" label: "1" class:1  priority:50}
+edge: {sourcename: "n236" targetname: "n254" label: "2" class:16 priority:10}
+node: {title: "n234" label: "AddP  234"  info1: "Add 234
+  mode:    P
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    Add 232
+     1:    Add 233
+  Private Attributes:
+"
+}
+edge: {sourcename: "n234" targetname: "n232" label: "0" class:1  priority:50}
+edge: {sourcename: "n234" targetname: "n233" label: "1" class:1  priority:50}
+node: {title: "n233" label: "AddP  233"  info1: "Add 233
+  mode:    P
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    0x8 226
+     1:    Add 232
+  Private Attributes:
+"
+}
+node: {title: "n233n226" label: "0x8Is  226"  info1: "0x8 226
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n233" targetname: "n233n226" label: "0" class:16 priority:10}
+edge: {sourcename: "n233" targetname: "n232" label: "1" class:1  priority:50}
+node: {title: "n232" label: "AddP  232"  info1: "Add 232
+  mode:    P
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    0x8 226
+     1:    Add 231
+  Private Attributes:
+"
+}
+node: {title: "n232n226" label: "0x8Is  226"  info1: "0x8 226
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n232" targetname: "n232n226" label: "0" class:16 priority:10}
+edge: {sourcename: "n232" targetname: "n231" label: "1" class:1  priority:50}
+node: {title: "n231" label: "AddP  231"  info1: "Add 231
+  mode:    P
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    0x4 225
+     1:    Add 230
+  Private Attributes:
+"
+}
+node: {title: "n231n225" label: "0x4Is  225"  info1: "0x4 225
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n231" targetname: "n231n225" label: "0" class:16 priority:10}
+edge: {sourcename: "n231" targetname: "n230" label: "1" class:1  priority:50}
+node: {title: "n230" label: "AddP  230"  info1: "Add 230
+  mode:    P
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    Mul 228
+     1:    SymC &a 213
+  Private Attributes:
+"
+}
+node: {title: "n230n213" label: "SymC &a  213"  info1: "SymC &a 213
+  mode:    P
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  kind:   addr_ent
+  entity: entity GlobalType.a (197)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n230" targetname: "n228" label: "0" class:1  priority:50}
+edge: {sourcename: "n230" targetname: "n230n213" label: "1" class:16 priority:10}
+node: {title: "n228" label: "MulIs  228"  info1: "Mul 228
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    0x4 225
+     1:    Phi 254
+  Private Attributes:
+"
+}
+node: {title: "n228n225" label: "0x4Is  225"  info1: "0x4 225
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n228" targetname: "n228n225" label: "0" class:16 priority:10}
+edge: {sourcename: "n228" targetname: "n254" label: "1" class:16 priority:10}
+node: {title: "n240" label: "Jmp  240"  info1: "Jmp 240
+  mode:    X
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 223
+  Private Attributes:
+"
+}
+node: {title: "n239" label: "SubIs  239"  info1: "Sub 239
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   2
+  pred nodes:
+    -1:    Block 223
+     0:    Phi 254
+     1:    0x1 224
+  Private Attributes:
+"
+}
+node: {title: "n239n224" label: "0x1Is  224"  info1: "0x1 224
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n239" targetname: "n254" label: "0" class:16 priority:10}
+edge: {sourcename: "n239" targetname: "n239n224" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n201"  label: "Block 201" status:clustered color:yellow
+edge: {sourcename: "n201" targetname: "n205" label: "0" class:13 priority:60 color:red}
+node: {title: "n208" label: "ProjM 1 208"  info1: "Proj 208
+  mode:    M
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 201
+     0:    Start 202
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n208" targetname: "n202" label: "0" class:17 priority:10 color:blue}
+node: {title: "n205" label: "ProjX 0 205"  info1: "Proj 205
+  mode:    X
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   1
+  pred nodes:
+    -1:    Block 201
+     0:    Start 202
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n205" targetname: "n202" label: "0" class:13 priority:60 color:red}
+node: {title: "n202" label: "Start  202"  info1: "Start 202
+  mode:    T
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m3
+  arity:   0
+  pred nodes:
+    -1:    Block 201
+  Private Attributes:
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+}
+
+}
+
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m4-loop-unrolling.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m4-loop-unrolling.vcg
new file mode 100644 (file)
index 0000000..4a09963
--- /dev/null
@@ -0,0 +1,1145 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m4"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+graph: { title: "g276" label: "LOOP_UNROLL_EXAMPLE_m4" status:clustered color:white
+graph: { title: "n265"  label: "Block 265" status:clustered color:yellow
+edge: {sourcename: "n265" targetname: "n316" label: "0" class:13 priority:60 color:red}
+node: {title: "n266" label: "End  266"  info1: "End 266
+  mode:    X
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 265
+     0:    Phi 320
+  Private Attributes:
+  in loop 573 with depth 0
+"
+color: blue}
+}
+
+graph: { title: "n313"  label: "Block 313" status:clustered color:yellow
+edge: {sourcename: "n313" targetname: "n287" label: "0" class:13 priority:60 color:red}
+node: {title: "n316" label: "Return  316"  info1: "Return 316
+  mode:    X
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 313
+     0:    Phi 320
+     1:    0x4 291
+  Private Attributes:
+  in loop 573 with depth 0
+  return in method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    res 0 type: int
+"
+}
+node: {title: "n316n291" label: "0x4Is  291"  info1: "0x4 291
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n316" targetname: "n320" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n316" targetname: "n316n291" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n281"  label: "Block 281" status:clustered color:yellow
+edge: {sourcename: "n281" targetname: "n280" label: "0" class:13 priority:60 color:red}
+backedge: {sourcename: "n281" targetname: "n608" label: "1" linestyle:dashed class:13 priority:60 color:red}
+node: {title: "n320" label: "PhiM  320"  info1: "Phi 320
+  mode:    M
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 281
+     0:    Proj 274
+     1:    Proj 605
+  Private Attributes:
+  backedges:
+  in loop 576 with depth 1
+"
+color: green}
+edge: {sourcename: "n320" targetname: "n274" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n320" targetname: "n605" label: "1" class:17 priority:10 color:blue}
+node: {title: "n287" label: "ProjX 0 287"  info1: "Proj 287
+  mode:    X
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 281
+     0:    Cond 286
+  Private Attributes:
+  in loop 573 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n287" targetname: "n286" label: "0" class:13 priority:60 color:red}
+node: {title: "n288" label: "ProjX 1 288"  info1: "Proj 288
+  mode:    X
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 281
+     0:    Cond 286
+  Private Attributes:
+  in loop 575 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n288" targetname: "n286" label: "0" class:13 priority:60 color:red}
+node: {title: "n286" label: "Cond  286"  info1: "Cond 286
+  mode:    T
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 281
+     0:    Proj 285
+  Private Attributes:
+  in loop 575 with depth 2
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n286" targetname: "n285" label: "0" class:1  priority:50}
+node: {title: "n285" label: "Projb Ge 285"  info1: "Proj 285
+  mode:    b
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 281
+     0:    Cmp 284
+  Private Attributes:
+  in loop 575 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n285" targetname: "n284" label: "0" class:1  priority:50}
+node: {title: "n284" label: "Cmp  284"  info1: "Cmp 284
+  mode:    T
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 281
+     0:    0xB 283
+     1:    Phi 321
+  Private Attributes:
+  in loop 575 with depth 2
+"
+}
+node: {title: "n284n283" label: "0xBIs  283"  info1: "0xB 283
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n284" targetname: "n284n283" label: "0" class:16 priority:10}
+edge: {sourcename: "n284" targetname: "n321" label: "1" class:1  priority:50}
+node: {title: "n321" label: "PhiIs  321"  info1: "Phi 321
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 281
+     0:    0x0 278
+     1:    Add 581
+  Private Attributes:
+  backedges:
+  in loop 574 with depth 1
+"
+color: green}
+node: {title: "n321n278" label: "0x0Is  278"  info1: "0x0 278
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n321" targetname: "n321n278" label: "0" class:16 priority:10}
+edge: {sourcename: "n321" targetname: "n581" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n277"  label: "Block 277" status:clustered color:yellow
+edge: {sourcename: "n277" targetname: "n271" label: "0" class:13 priority:60 color:red}
+node: {title: "n280" label: "Jmp  280"  info1: "Jmp 280
+  mode:    X
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 277
+  Private Attributes:
+  in loop 573 with depth 0
+"
+}
+}
+
+graph: { title: "n611"  label: "Block 611" status:clustered color:yellow
+edge: {sourcename: "n611" targetname: "n607" label: "0" class:13 priority:60 color:red}
+node: {title: "n605" label: "ProjM 0 605"  info1: "Proj 605
+  mode:    M
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 611
+     0:    Store 602
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n605" targetname: "n602" label: "0" class:17 priority:10 color:blue}
+node: {title: "n602" label: "Store  602"  info1: "Store 602
+  mode:    T
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   3
+  pred nodes:
+    -1:    Block 611
+     0:    Proj 593
+     1:    Add 599
+     2:    Add 581
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n602" targetname: "n593" label: "0" class:14 priority:50 color:blue}
+edge: {sourcename: "n602" targetname: "n599" label: "1" class:1  priority:50}
+edge: {sourcename: "n602" targetname: "n581" label: "2" class:1  priority:50}
+node: {title: "n593" label: "ProjM 0 593"  info1: "Proj 593
+  mode:    M
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 611
+     0:    Store 590
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n593" targetname: "n590" label: "0" class:17 priority:10 color:blue}
+node: {title: "n590" label: "Store  590"  info1: "Store 590
+  mode:    T
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   3
+  pred nodes:
+    -1:    Block 611
+     0:    Proj 604
+     1:    Add 587
+     2:    Add 581
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n590" targetname: "n604" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n590" targetname: "n587" label: "1" class:1  priority:50}
+edge: {sourcename: "n590" targetname: "n581" label: "2" class:1  priority:50}
+node: {title: "n587" label: "AddP  587"  info1: "Add 587
+  mode:    P
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 611
+     0:    Mul 584
+     1:    SymC &a 279
+  Private Attributes:
+"
+}
+node: {title: "n587n279" label: "SymC &a  279"  info1: "SymC &a 279
+  mode:    P
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (263)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n587" targetname: "n584" label: "0" class:1  priority:50}
+edge: {sourcename: "n587" targetname: "n587n279" label: "1" class:16 priority:10}
+node: {title: "n584" label: "MulIs  584"  info1: "Mul 584
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 611
+     0:    0x8 292
+     1:    Add 581
+  Private Attributes:
+"
+}
+node: {title: "n584n292" label: "0x8Is  292"  info1: "0x8 292
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n584" targetname: "n584n292" label: "0" class:16 priority:10}
+edge: {sourcename: "n584" targetname: "n581" label: "1" class:1  priority:50}
+node: {title: "n599" label: "AddP  599"  info1: "Add 599
+  mode:    P
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 611
+     0:    SymC &a 279
+     1:    Mul 596
+  Private Attributes:
+"
+}
+node: {title: "n599n279" label: "SymC &a  279"  info1: "SymC &a 279
+  mode:    P
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (263)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n599" targetname: "n599n279" label: "0" class:16 priority:10}
+edge: {sourcename: "n599" targetname: "n596" label: "1" class:1  priority:50}
+node: {title: "n596" label: "MulIs  596"  info1: "Mul 596
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 611
+     0:    0x4 291
+     1:    Add 581
+  Private Attributes:
+"
+}
+node: {title: "n596n291" label: "0x4Is  291"  info1: "0x4 291
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n596" targetname: "n596n291" label: "0" class:16 priority:10}
+edge: {sourcename: "n596" targetname: "n581" label: "1" class:1  priority:50}
+node: {title: "n608" label: "Jmp  608"  info1: "Jmp 608
+  mode:    X
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 611
+  Private Attributes:
+"
+}
+node: {title: "n581" label: "AddIs  581"  info1: "Add 581
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 611
+     0:    0x1 290
+     1:    Add 580
+  Private Attributes:
+"
+}
+node: {title: "n581n290" label: "0x1Is  290"  info1: "0x1 290
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n581" targetname: "n581n290" label: "0" class:16 priority:10}
+edge: {sourcename: "n581" targetname: "n580" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n610"  label: "Block 610" status:clustered color:yellow
+edge: {sourcename: "n610" targetname: "n606" label: "0" class:13 priority:60 color:red}
+node: {title: "n604" label: "ProjM 0 604"  info1: "Proj 604
+  mode:    M
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 610
+     0:    Store 601
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n604" targetname: "n601" label: "0" class:17 priority:10 color:blue}
+node: {title: "n601" label: "Store  601"  info1: "Store 601
+  mode:    T
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   3
+  pred nodes:
+    -1:    Block 610
+     0:    Proj 592
+     1:    Add 598
+     2:    Add 580
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n601" targetname: "n592" label: "0" class:14 priority:50 color:blue}
+edge: {sourcename: "n601" targetname: "n598" label: "1" class:1  priority:50}
+edge: {sourcename: "n601" targetname: "n580" label: "2" class:1  priority:50}
+node: {title: "n592" label: "ProjM 0 592"  info1: "Proj 592
+  mode:    M
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 610
+     0:    Store 589
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n592" targetname: "n589" label: "0" class:17 priority:10 color:blue}
+node: {title: "n589" label: "Store  589"  info1: "Store 589
+  mode:    T
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   3
+  pred nodes:
+    -1:    Block 610
+     0:    Proj 603
+     1:    Add 586
+     2:    Add 580
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n589" targetname: "n603" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n589" targetname: "n586" label: "1" class:1  priority:50}
+edge: {sourcename: "n589" targetname: "n580" label: "2" class:1  priority:50}
+node: {title: "n586" label: "AddP  586"  info1: "Add 586
+  mode:    P
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 610
+     0:    Mul 583
+     1:    SymC &a 279
+  Private Attributes:
+"
+}
+node: {title: "n586n279" label: "SymC &a  279"  info1: "SymC &a 279
+  mode:    P
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (263)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n586" targetname: "n583" label: "0" class:1  priority:50}
+edge: {sourcename: "n586" targetname: "n586n279" label: "1" class:16 priority:10}
+node: {title: "n583" label: "MulIs  583"  info1: "Mul 583
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 610
+     0:    0x8 292
+     1:    Add 580
+  Private Attributes:
+"
+}
+node: {title: "n583n292" label: "0x8Is  292"  info1: "0x8 292
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n583" targetname: "n583n292" label: "0" class:16 priority:10}
+edge: {sourcename: "n583" targetname: "n580" label: "1" class:1  priority:50}
+node: {title: "n598" label: "AddP  598"  info1: "Add 598
+  mode:    P
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 610
+     0:    SymC &a 279
+     1:    Mul 595
+  Private Attributes:
+"
+}
+node: {title: "n598n279" label: "SymC &a  279"  info1: "SymC &a 279
+  mode:    P
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (263)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n598" targetname: "n598n279" label: "0" class:16 priority:10}
+edge: {sourcename: "n598" targetname: "n595" label: "1" class:1  priority:50}
+node: {title: "n595" label: "MulIs  595"  info1: "Mul 595
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 610
+     0:    0x4 291
+     1:    Add 580
+  Private Attributes:
+"
+}
+node: {title: "n595n291" label: "0x4Is  291"  info1: "0x4 291
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n595" targetname: "n595n291" label: "0" class:16 priority:10}
+edge: {sourcename: "n595" targetname: "n580" label: "1" class:1  priority:50}
+node: {title: "n607" label: "Jmp  607"  info1: "Jmp 607
+  mode:    X
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 610
+  Private Attributes:
+"
+}
+node: {title: "n580" label: "AddIs  580"  info1: "Add 580
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 610
+     0:    0x1 290
+     1:    Add 579
+  Private Attributes:
+"
+}
+node: {title: "n580n290" label: "0x1Is  290"  info1: "0x1 290
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n580" targetname: "n580n290" label: "0" class:16 priority:10}
+edge: {sourcename: "n580" targetname: "n579" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n609"  label: "Block 609" status:clustered color:yellow
+edge: {sourcename: "n609" targetname: "n307" label: "0" class:13 priority:60 color:red}
+node: {title: "n603" label: "ProjM 0 603"  info1: "Proj 603
+  mode:    M
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 609
+     0:    Store 600
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n603" targetname: "n600" label: "0" class:17 priority:10 color:blue}
+node: {title: "n600" label: "Store  600"  info1: "Store 600
+  mode:    T
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   3
+  pred nodes:
+    -1:    Block 609
+     0:    Proj 591
+     1:    Add 597
+     2:    Add 579
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n600" targetname: "n591" label: "0" class:14 priority:50 color:blue}
+edge: {sourcename: "n600" targetname: "n597" label: "1" class:1  priority:50}
+edge: {sourcename: "n600" targetname: "n579" label: "2" class:1  priority:50}
+node: {title: "n591" label: "ProjM 0 591"  info1: "Proj 591
+  mode:    M
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 609
+     0:    Store 588
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n591" targetname: "n588" label: "0" class:17 priority:10 color:blue}
+node: {title: "n588" label: "Store  588"  info1: "Store 588
+  mode:    T
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   3
+  pred nodes:
+    -1:    Block 609
+     0:    Proj 306
+     1:    Add 585
+     2:    Add 579
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n588" targetname: "n306" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n588" targetname: "n585" label: "1" class:1  priority:50}
+edge: {sourcename: "n588" targetname: "n579" label: "2" class:1  priority:50}
+node: {title: "n585" label: "AddP  585"  info1: "Add 585
+  mode:    P
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 609
+     0:    Mul 582
+     1:    SymC &a 279
+  Private Attributes:
+"
+}
+node: {title: "n585n279" label: "SymC &a  279"  info1: "SymC &a 279
+  mode:    P
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (263)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n585" targetname: "n582" label: "0" class:1  priority:50}
+edge: {sourcename: "n585" targetname: "n585n279" label: "1" class:16 priority:10}
+node: {title: "n582" label: "MulIs  582"  info1: "Mul 582
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 609
+     0:    0x8 292
+     1:    Add 579
+  Private Attributes:
+"
+}
+node: {title: "n582n292" label: "0x8Is  292"  info1: "0x8 292
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n582" targetname: "n582n292" label: "0" class:16 priority:10}
+edge: {sourcename: "n582" targetname: "n579" label: "1" class:1  priority:50}
+node: {title: "n597" label: "AddP  597"  info1: "Add 597
+  mode:    P
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 609
+     0:    SymC &a 279
+     1:    Mul 594
+  Private Attributes:
+"
+}
+node: {title: "n597n279" label: "SymC &a  279"  info1: "SymC &a 279
+  mode:    P
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (263)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n597" targetname: "n597n279" label: "0" class:16 priority:10}
+edge: {sourcename: "n597" targetname: "n594" label: "1" class:1  priority:50}
+node: {title: "n594" label: "MulIs  594"  info1: "Mul 594
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 609
+     0:    0x4 291
+     1:    Add 579
+  Private Attributes:
+"
+}
+node: {title: "n594n291" label: "0x4Is  291"  info1: "0x4 291
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n594" targetname: "n594n291" label: "0" class:16 priority:10}
+edge: {sourcename: "n594" targetname: "n579" label: "1" class:1  priority:50}
+node: {title: "n606" label: "Jmp  606"  info1: "Jmp 606
+  mode:    X
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 609
+  Private Attributes:
+"
+}
+node: {title: "n579" label: "AddIs  579"  info1: "Add 579
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 609
+     0:    0x1 290
+     1:    Add 294
+  Private Attributes:
+"
+}
+node: {title: "n579n290" label: "0x1Is  290"  info1: "0x1 290
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n579" targetname: "n579n290" label: "0" class:16 priority:10}
+edge: {sourcename: "n579" targetname: "n294" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n289"  label: "Block 289" status:clustered color:yellow
+edge: {sourcename: "n289" targetname: "n288" label: "0" class:13 priority:60 color:red}
+node: {title: "n306" label: "ProjM 0 306"  info1: "Proj 306
+  mode:    M
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 289
+     0:    Store 304
+  Private Attributes:
+  in loop 576 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n306" targetname: "n304" label: "0" class:17 priority:10 color:blue}
+node: {title: "n304" label: "Store  304"  info1: "Store 304
+  mode:    T
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   3
+  pred nodes:
+    -1:    Block 289
+     0:    Proj 301
+     1:    Add 303
+     2:    Add 294
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 576 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n304" targetname: "n301" label: "0" class:14 priority:50 color:blue}
+edge: {sourcename: "n304" targetname: "n303" label: "1" class:1  priority:50}
+edge: {sourcename: "n304" targetname: "n294" label: "2" class:1  priority:50}
+node: {title: "n301" label: "ProjM 0 301"  info1: "Proj 301
+  mode:    M
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 289
+     0:    Store 299
+  Private Attributes:
+  in loop 576 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n301" targetname: "n299" label: "0" class:17 priority:10 color:blue}
+node: {title: "n299" label: "Store  299"  info1: "Store 299
+  mode:    T
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   3
+  pred nodes:
+    -1:    Block 289
+     0:    Phi 320
+     1:    Add 297
+     2:    Add 294
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 576 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n299" targetname: "n320" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n299" targetname: "n297" label: "1" class:1  priority:50}
+edge: {sourcename: "n299" targetname: "n294" label: "2" class:1  priority:50}
+node: {title: "n297" label: "AddP  297"  info1: "Add 297
+  mode:    P
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 289
+     0:    Mul 295
+     1:    SymC &a 279
+  Private Attributes:
+  in loop 573 with depth 0
+"
+}
+node: {title: "n297n279" label: "SymC &a  279"  info1: "SymC &a 279
+  mode:    P
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (263)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n297" targetname: "n295" label: "0" class:1  priority:50}
+edge: {sourcename: "n297" targetname: "n297n279" label: "1" class:16 priority:10}
+node: {title: "n295" label: "MulIs  295"  info1: "Mul 295
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 289
+     0:    0x8 292
+     1:    Add 294
+  Private Attributes:
+  in loop 573 with depth 0
+"
+}
+node: {title: "n295n292" label: "0x8Is  292"  info1: "0x8 292
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n295" targetname: "n295n292" label: "0" class:16 priority:10}
+edge: {sourcename: "n295" targetname: "n294" label: "1" class:1  priority:50}
+node: {title: "n303" label: "AddP  303"  info1: "Add 303
+  mode:    P
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 289
+     0:    SymC &a 279
+     1:    Mul 302
+  Private Attributes:
+  in loop 573 with depth 0
+"
+}
+node: {title: "n303n279" label: "SymC &a  279"  info1: "SymC &a 279
+  mode:    P
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (263)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n303" targetname: "n303n279" label: "0" class:16 priority:10}
+edge: {sourcename: "n303" targetname: "n302" label: "1" class:1  priority:50}
+node: {title: "n302" label: "MulIs  302"  info1: "Mul 302
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 289
+     0:    0x4 291
+     1:    Add 294
+  Private Attributes:
+  in loop 573 with depth 0
+"
+}
+node: {title: "n302n291" label: "0x4Is  291"  info1: "0x4 291
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n302" targetname: "n302n291" label: "0" class:16 priority:10}
+edge: {sourcename: "n302" targetname: "n294" label: "1" class:1  priority:50}
+node: {title: "n307" label: "Jmp  307"  info1: "Jmp 307
+  mode:    X
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 289
+  Private Attributes:
+  in loop 575 with depth 2
+"
+}
+node: {title: "n294" label: "AddIs  294"  info1: "Add 294
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 289
+     0:    0x1 290
+     1:    Phi 321
+  Private Attributes:
+  in loop 574 with depth 1
+"
+}
+node: {title: "n294n290" label: "0x1Is  290"  info1: "0x1 290
+  mode:    Is
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n294" targetname: "n294n290" label: "0" class:16 priority:10}
+edge: {sourcename: "n294" targetname: "n321" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n267"  label: "Block 267" status:clustered color:yellow
+edge: {sourcename: "n267" targetname: "n271" label: "0" class:13 priority:60 color:red}
+node: {title: "n274" label: "ProjM 1 274"  info1: "Proj 274
+  mode:    M
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 267
+     0:    Start 268
+  Private Attributes:
+  in loop 573 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n274" targetname: "n268" label: "0" class:17 priority:10 color:blue}
+node: {title: "n271" label: "ProjX 0 271"  info1: "Proj 271
+  mode:    X
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 267
+     0:    Start 268
+  Private Attributes:
+  in loop 573 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n271" targetname: "n268" label: "0" class:13 priority:60 color:red}
+node: {title: "n268" label: "Start  268"  info1: "Start 268
+  mode:    T
+  visited: 32
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+}
+
+}
+
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m4-looptree.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m4-looptree.vcg
new file mode 100644 (file)
index 0000000..e355c8c
--- /dev/null
@@ -0,0 +1,69 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m4"
+display_edge_labels: yes
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: top_to_bottom
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+node: {title: "l577" label: "loop 0, 1 sons, 4 nodes"  info1: " loop nr: 577
+ The loop was analyzed 0 times."}
+node: { title: "l577-0-nodes" color: lightyellow label: "Block  267
+Block  277" }
+edge: {sourcename: "l577" targetname: "l577-0-nodes" label:"0...1"}
+edge: {sourcename: "l577" targetname: "l578" color: darkgreen label: "2"}
+node: {title: "l578" label: "loop 1, 0 sons, 2 nodes"  info1: " loop nr: 578
+ The loop was analyzed 0 times."}
+node: { title: "l578-0-nodes" color: lightyellow label: "Block  281     loop head!
+Block  289" }
+edge: {sourcename: "l578" targetname: "l578-0-nodes" label:"0...1"}
+node: { title: "l577-3-nodes" color: lightyellow label: "Block  313
+Block  265" }
+edge: {sourcename: "l577" targetname: "l577-3-nodes" label:"3...4"}
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m4-pure.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m4-pure.vcg
new file mode 100644 (file)
index 0000000..5027857
--- /dev/null
@@ -0,0 +1,602 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m4"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+node: {title: "n268" label: "Start  268"  info1: "Start 268
+  mode:    T
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+edge: { sourcename: "n268" targetname: "n267" class:2  priority:50 linestyle:dotted}
+node: {title: "n271" label: "ProjX 0 271"  info1: "Proj 271
+  mode:    X
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 267
+     0:    Start 268
+  Private Attributes:
+  in loop 573 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n271" targetname: "n268" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n271" targetname: "n267" class:2  priority:50 linestyle:dotted}
+node: {title: "n267" label: "Block  267"  info1: "Block 267
+  mode:    BB
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+     0:    Proj 271
+  Private Attributes:
+  backedges:
+  in loop 573 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n267" targetname: "n271" label: "0" class:13 priority:60 color:red}
+node: {title: "n294" label: "AddIs  294"  info1: "Add 294
+  mode:    Is
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 289
+     0:    0x1 290
+     1:    Phi 321
+  Private Attributes:
+  in loop 574 with depth 1
+"
+}
+node: {title: "n294n290" label: "0x1Is  290"  info1: "0x1 290
+  mode:    Is
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n294" targetname: "n294n290" label: "0" class:16 priority:10}
+edge: {sourcename: "n294" targetname: "n321" label: "1" class:16 priority:10}
+edge: { sourcename: "n294" targetname: "n289" class:2  priority:50 linestyle:dotted}
+node: {title: "n321" label: "PhiIs  321"  info1: "Phi 321
+  mode:    Is
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 281
+     0:    0x0 278
+     1: be Add 294
+  Private Attributes:
+  backedges:  1
+  in loop 574 with depth 1
+"
+color: green}
+node: {title: "n321n278" label: "0x0Is  278"  info1: "0x0 278
+  mode:    Is
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n321" targetname: "n321n278" label: "0" class:16 priority:10}
+backedge: {sourcename: "n321" targetname: "n294" label: "1" linestyle:dashed class:16 priority:10}
+edge: { sourcename: "n321" targetname: "n281" class:2  priority:50 linestyle:dotted}
+node: {title: "n284" label: "Cmp  284"  info1: "Cmp 284
+  mode:    T
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 281
+     0:    0xB 283
+     1:    Phi 321
+  Private Attributes:
+  in loop 575 with depth 2
+"
+}
+node: {title: "n284n283" label: "0xBIs  283"  info1: "0xB 283
+  mode:    Is
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n284" targetname: "n284n283" label: "0" class:16 priority:10}
+edge: {sourcename: "n284" targetname: "n321" label: "1" class:1  priority:50}
+edge: { sourcename: "n284" targetname: "n281" class:2  priority:50 linestyle:dotted}
+node: {title: "n285" label: "Projb Ge 285"  info1: "Proj 285
+  mode:    b
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 281
+     0:    Cmp 284
+  Private Attributes:
+  in loop 575 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n285" targetname: "n284" label: "0" class:1  priority:50}
+edge: { sourcename: "n285" targetname: "n281" class:2  priority:50 linestyle:dotted}
+node: {title: "n286" label: "Cond  286"  info1: "Cond 286
+  mode:    T
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 281
+     0:    Proj 285
+  Private Attributes:
+  in loop 575 with depth 2
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n286" targetname: "n285" label: "0" class:1  priority:50}
+edge: { sourcename: "n286" targetname: "n281" class:2  priority:50 linestyle:dotted}
+node: {title: "n288" label: "ProjX 1 288"  info1: "Proj 288
+  mode:    X
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 281
+     0:    Cond 286
+  Private Attributes:
+  in loop 575 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n288" targetname: "n286" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n288" targetname: "n281" class:2  priority:50 linestyle:dotted}
+node: {title: "n289" label: "Block  289"  info1: "Block 289
+  mode:    BB
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+     0:    Proj 288
+  Private Attributes:
+  backedges:
+  in loop 575 with depth 2
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n289" targetname: "n288" label: "0" class:13 priority:60 color:red}
+node: {title: "n307" label: "Jmp  307"  info1: "Jmp 307
+  mode:    X
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 289
+  Private Attributes:
+  in loop 575 with depth 2
+"
+}
+edge: { sourcename: "n307" targetname: "n289" class:2  priority:50 linestyle:dotted}
+node: {title: "n277" label: "Block  277"  info1: "Block 277
+  mode:    BB
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+     0:    Proj 271
+  Private Attributes:
+  backedges:
+  in loop 573 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n277" targetname: "n271" label: "0" class:13 priority:60 color:red}
+node: {title: "n280" label: "Jmp  280"  info1: "Jmp 280
+  mode:    X
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 277
+  Private Attributes:
+  in loop 573 with depth 0
+"
+}
+edge: { sourcename: "n280" targetname: "n277" class:2  priority:50 linestyle:dotted}
+node: {title: "n281" label: "Block  281"  info1: "Block 281
+  mode:    BB
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+     0:    Jmp 280
+     1: be Jmp 307
+  Private Attributes:
+  backedges:  1
+  in loop 575 with depth 2
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n281" targetname: "n280" label: "0" class:13 priority:60 color:red}
+backedge: {sourcename: "n281" targetname: "n307" label: "1" linestyle:dashed class:13 priority:60 color:red}
+node: {title: "n287" label: "ProjX 0 287"  info1: "Proj 287
+  mode:    X
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 281
+     0:    Cond 286
+  Private Attributes:
+  in loop 573 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n287" targetname: "n286" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n287" targetname: "n281" class:2  priority:50 linestyle:dotted}
+node: {title: "n313" label: "Block  313"  info1: "Block 313
+  mode:    BB
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+     0:    Proj 287
+  Private Attributes:
+  backedges:
+  in loop 573 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n313" targetname: "n287" label: "0" class:13 priority:60 color:red}
+node: {title: "n302" label: "MulIs  302"  info1: "Mul 302
+  mode:    Is
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 289
+     0:    0x4 291
+     1:    Add 294
+  Private Attributes:
+  in loop 573 with depth 0
+"
+}
+node: {title: "n302n291" label: "0x4Is  291"  info1: "0x4 291
+  mode:    Is
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n302" targetname: "n302n291" label: "0" class:16 priority:10}
+edge: {sourcename: "n302" targetname: "n294" label: "1" class:1  priority:50}
+edge: { sourcename: "n302" targetname: "n289" class:2  priority:50 linestyle:dotted}
+node: {title: "n303" label: "AddP  303"  info1: "Add 303
+  mode:    P
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 289
+     0:    SymC &a 279
+     1:    Mul 302
+  Private Attributes:
+  in loop 573 with depth 0
+"
+}
+node: {title: "n303n279" label: "SymC &a  279"  info1: "SymC &a 279
+  mode:    P
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (263)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n303" targetname: "n303n279" label: "0" class:16 priority:10}
+edge: {sourcename: "n303" targetname: "n302" label: "1" class:1  priority:50}
+edge: { sourcename: "n303" targetname: "n289" class:2  priority:50 linestyle:dotted}
+node: {title: "n295" label: "MulIs  295"  info1: "Mul 295
+  mode:    Is
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 289
+     0:    0x8 292
+     1:    Add 294
+  Private Attributes:
+  in loop 573 with depth 0
+"
+}
+node: {title: "n295n292" label: "0x8Is  292"  info1: "0x8 292
+  mode:    Is
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n295" targetname: "n295n292" label: "0" class:16 priority:10}
+edge: {sourcename: "n295" targetname: "n294" label: "1" class:1  priority:50}
+edge: { sourcename: "n295" targetname: "n289" class:2  priority:50 linestyle:dotted}
+node: {title: "n297" label: "AddP  297"  info1: "Add 297
+  mode:    P
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 289
+     0:    Mul 295
+     1:    SymC &a 279
+  Private Attributes:
+  in loop 573 with depth 0
+"
+}
+node: {title: "n297n279" label: "SymC &a  279"  info1: "SymC &a 279
+  mode:    P
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (263)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n297" targetname: "n295" label: "0" class:1  priority:50}
+edge: {sourcename: "n297" targetname: "n297n279" label: "1" class:16 priority:10}
+edge: { sourcename: "n297" targetname: "n289" class:2  priority:50 linestyle:dotted}
+node: {title: "n299" label: "Store  299"  info1: "Store 299
+  mode:    T
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   3
+  pred nodes:
+    -1:    Block 289
+     0:    Phi 320
+     1:    Add 297
+     2:    Add 294
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 576 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n299" targetname: "n320" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n299" targetname: "n297" label: "1" class:1  priority:50}
+edge: {sourcename: "n299" targetname: "n294" label: "2" class:1  priority:50}
+edge: { sourcename: "n299" targetname: "n289" class:2  priority:50 linestyle:dotted}
+node: {title: "n301" label: "ProjM 0 301"  info1: "Proj 301
+  mode:    M
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 289
+     0:    Store 299
+  Private Attributes:
+  in loop 576 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n301" targetname: "n299" label: "0" class:17 priority:10 color:blue}
+edge: { sourcename: "n301" targetname: "n289" class:2  priority:50 linestyle:dotted}
+node: {title: "n304" label: "Store  304"  info1: "Store 304
+  mode:    T
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   3
+  pred nodes:
+    -1:    Block 289
+     0:    Proj 301
+     1:    Add 303
+     2:    Add 294
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 576 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n304" targetname: "n301" label: "0" class:14 priority:50 color:blue}
+edge: {sourcename: "n304" targetname: "n303" label: "1" class:1  priority:50}
+edge: {sourcename: "n304" targetname: "n294" label: "2" class:1  priority:50}
+edge: { sourcename: "n304" targetname: "n289" class:2  priority:50 linestyle:dotted}
+node: {title: "n306" label: "ProjM 0 306"  info1: "Proj 306
+  mode:    M
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 289
+     0:    Store 304
+  Private Attributes:
+  in loop 576 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n306" targetname: "n304" label: "0" class:17 priority:10 color:blue}
+edge: { sourcename: "n306" targetname: "n289" class:2  priority:50 linestyle:dotted}
+node: {title: "n274" label: "ProjM 1 274"  info1: "Proj 274
+  mode:    M
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 267
+     0:    Start 268
+  Private Attributes:
+  in loop 573 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n274" targetname: "n268" label: "0" class:17 priority:10 color:blue}
+edge: { sourcename: "n274" targetname: "n267" class:2  priority:50 linestyle:dotted}
+node: {title: "n320" label: "PhiM  320"  info1: "Phi 320
+  mode:    M
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 281
+     0:    Proj 274
+     1: be Proj 306
+  Private Attributes:
+  backedges:  1
+  in loop 576 with depth 1
+"
+color: green}
+edge: {sourcename: "n320" targetname: "n274" label: "0" class:17 priority:10 color:blue}
+backedge: {sourcename: "n320" targetname: "n306" label: "1" linestyle:dashed class:17 priority:10 color:blue}
+edge: { sourcename: "n320" targetname: "n281" class:2  priority:50 linestyle:dotted}
+node: {title: "n316" label: "Return  316"  info1: "Return 316
+  mode:    X
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 313
+     0:    Phi 320
+     1:    0x4 291
+  Private Attributes:
+  in loop 573 with depth 0
+  return in method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    res 0 type: int
+"
+}
+node: {title: "n316n291" label: "0x4Is  291"  info1: "0x4 291
+  mode:    Is
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  in loop 573 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n316" targetname: "n320" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n316" targetname: "n316n291" label: "1" class:16 priority:10}
+edge: { sourcename: "n316" targetname: "n313" class:2  priority:50 linestyle:dotted}
+node: {title: "n265" label: "Block  265"  info1: "Block 265
+  mode:    BB
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+     0:    Return 316
+  Private Attributes:
+  backedges:
+  in loop 573 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n265" targetname: "n316" label: "0" class:13 priority:60 color:red}
+node: {title: "n266" label: "End  266"  info1: "End 266
+  mode:    X
+  visited: 22
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 265
+     0:    Phi 320
+  Private Attributes:
+  in loop 573 with depth 0
+"
+color: blue}
+edge: { sourcename: "n266" targetname: "n265" class:2  priority:50 linestyle:dotted}
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m4.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m4.vcg
new file mode 100644 (file)
index 0000000..021b41e
--- /dev/null
@@ -0,0 +1,484 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m4"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+graph: { title: "g276" label: "LOOP_UNROLL_EXAMPLE_m4" status:clustered color:white
+graph: { title: "n265"  label: "Block 265" status:clustered color:yellow
+edge: {sourcename: "n265" targetname: "n316" label: "0" class:13 priority:60 color:red}
+node: {title: "n266" label: "End  266"  info1: "End 266
+  mode:    X
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 265
+     0:    Phi 320
+  Private Attributes:
+"
+color: blue}
+}
+
+graph: { title: "n313"  label: "Block 313" status:clustered color:yellow
+edge: {sourcename: "n313" targetname: "n287" label: "0" class:13 priority:60 color:red}
+node: {title: "n316" label: "Return  316"  info1: "Return 316
+  mode:    X
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 313
+     0:    Phi 320
+     1:    0x4 291
+  Private Attributes:
+  return in method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    res 0 type: int
+"
+}
+node: {title: "n316n291" label: "0x4Is  291"  info1: "0x4 291
+  mode:    Is
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n316" targetname: "n320" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n316" targetname: "n316n291" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n281"  label: "Block 281" status:clustered color:yellow
+edge: {sourcename: "n281" targetname: "n280" label: "0" class:13 priority:60 color:red}
+edge: {sourcename: "n281" targetname: "n307" label: "1" class:13 priority:60 color:red}
+node: {title: "n320" label: "PhiM  320"  info1: "Phi 320
+  mode:    M
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 281
+     0:    Proj 274
+     1:    Proj 306
+  Private Attributes:
+  backedges:
+"
+color: green}
+edge: {sourcename: "n320" targetname: "n274" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n320" targetname: "n306" label: "1" class:17 priority:10 color:blue}
+node: {title: "n287" label: "ProjX 0 287"  info1: "Proj 287
+  mode:    X
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 281
+     0:    Cond 286
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n287" targetname: "n286" label: "0" class:13 priority:60 color:red}
+node: {title: "n288" label: "ProjX 1 288"  info1: "Proj 288
+  mode:    X
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 281
+     0:    Cond 286
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n288" targetname: "n286" label: "0" class:13 priority:60 color:red}
+node: {title: "n286" label: "Cond  286"  info1: "Cond 286
+  mode:    T
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 281
+     0:    Proj 285
+  Private Attributes:
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n286" targetname: "n285" label: "0" class:1  priority:50}
+node: {title: "n285" label: "Projb Ge 285"  info1: "Proj 285
+  mode:    b
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 281
+     0:    Cmp 284
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n285" targetname: "n284" label: "0" class:1  priority:50}
+node: {title: "n284" label: "Cmp  284"  info1: "Cmp 284
+  mode:    T
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 281
+     0:    0xB 283
+     1:    Phi 321
+  Private Attributes:
+"
+}
+node: {title: "n284n283" label: "0xBIs  283"  info1: "0xB 283
+  mode:    Is
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n284" targetname: "n284n283" label: "0" class:16 priority:10}
+edge: {sourcename: "n284" targetname: "n321" label: "1" class:1  priority:50}
+node: {title: "n321" label: "PhiIs  321"  info1: "Phi 321
+  mode:    Is
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 281
+     0:    0x0 278
+     1:    Add 294
+  Private Attributes:
+  backedges:
+"
+color: green}
+node: {title: "n321n278" label: "0x0Is  278"  info1: "0x0 278
+  mode:    Is
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n321" targetname: "n321n278" label: "0" class:16 priority:10}
+edge: {sourcename: "n321" targetname: "n294" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n277"  label: "Block 277" status:clustered color:yellow
+edge: {sourcename: "n277" targetname: "n271" label: "0" class:13 priority:60 color:red}
+node: {title: "n280" label: "Jmp  280"  info1: "Jmp 280
+  mode:    X
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 277
+  Private Attributes:
+"
+}
+}
+
+graph: { title: "n289"  label: "Block 289" status:clustered color:yellow
+edge: {sourcename: "n289" targetname: "n288" label: "0" class:13 priority:60 color:red}
+node: {title: "n306" label: "ProjM 0 306"  info1: "Proj 306
+  mode:    M
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 289
+     0:    Store 304
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n306" targetname: "n304" label: "0" class:17 priority:10 color:blue}
+node: {title: "n304" label: "Store  304"  info1: "Store 304
+  mode:    T
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   3
+  pred nodes:
+    -1:    Block 289
+     0:    Proj 301
+     1:    Add 303
+     2:    Add 294
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n304" targetname: "n301" label: "0" class:14 priority:50 color:blue}
+edge: {sourcename: "n304" targetname: "n303" label: "1" class:1  priority:50}
+edge: {sourcename: "n304" targetname: "n294" label: "2" class:1  priority:50}
+node: {title: "n301" label: "ProjM 0 301"  info1: "Proj 301
+  mode:    M
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 289
+     0:    Store 299
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n301" targetname: "n299" label: "0" class:17 priority:10 color:blue}
+node: {title: "n299" label: "Store  299"  info1: "Store 299
+  mode:    T
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   3
+  pred nodes:
+    -1:    Block 289
+     0:    Phi 320
+     1:    Add 297
+     2:    Add 294
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n299" targetname: "n320" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n299" targetname: "n297" label: "1" class:1  priority:50}
+edge: {sourcename: "n299" targetname: "n294" label: "2" class:1  priority:50}
+node: {title: "n297" label: "AddP  297"  info1: "Add 297
+  mode:    P
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 289
+     0:    Mul 295
+     1:    SymC &a 279
+  Private Attributes:
+"
+}
+node: {title: "n297n279" label: "SymC &a  279"  info1: "SymC &a 279
+  mode:    P
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  kind:   addr_ent
+  entity: entity GlobalType.a (263)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n297" targetname: "n295" label: "0" class:1  priority:50}
+edge: {sourcename: "n297" targetname: "n297n279" label: "1" class:16 priority:10}
+node: {title: "n295" label: "MulIs  295"  info1: "Mul 295
+  mode:    Is
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 289
+     0:    0x8 292
+     1:    Add 294
+  Private Attributes:
+"
+}
+node: {title: "n295n292" label: "0x8Is  292"  info1: "0x8 292
+  mode:    Is
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n295" targetname: "n295n292" label: "0" class:16 priority:10}
+edge: {sourcename: "n295" targetname: "n294" label: "1" class:1  priority:50}
+node: {title: "n303" label: "AddP  303"  info1: "Add 303
+  mode:    P
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 289
+     0:    SymC &a 279
+     1:    Mul 302
+  Private Attributes:
+"
+}
+node: {title: "n303n279" label: "SymC &a  279"  info1: "SymC &a 279
+  mode:    P
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  kind:   addr_ent
+  entity: entity GlobalType.a (263)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n303" targetname: "n303n279" label: "0" class:16 priority:10}
+edge: {sourcename: "n303" targetname: "n302" label: "1" class:1  priority:50}
+node: {title: "n302" label: "MulIs  302"  info1: "Mul 302
+  mode:    Is
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 289
+     0:    0x4 291
+     1:    Add 294
+  Private Attributes:
+"
+}
+node: {title: "n302n291" label: "0x4Is  291"  info1: "0x4 291
+  mode:    Is
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n302" targetname: "n302n291" label: "0" class:16 priority:10}
+edge: {sourcename: "n302" targetname: "n294" label: "1" class:1  priority:50}
+node: {title: "n307" label: "Jmp  307"  info1: "Jmp 307
+  mode:    X
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 289
+  Private Attributes:
+"
+}
+node: {title: "n294" label: "AddIs  294"  info1: "Add 294
+  mode:    Is
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   2
+  pred nodes:
+    -1:    Block 289
+     0:    0x1 290
+     1:    Phi 321
+  Private Attributes:
+"
+}
+node: {title: "n294n290" label: "0x1Is  290"  info1: "0x1 290
+  mode:    Is
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n294" targetname: "n294n290" label: "0" class:16 priority:10}
+edge: {sourcename: "n294" targetname: "n321" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n267"  label: "Block 267" status:clustered color:yellow
+edge: {sourcename: "n267" targetname: "n271" label: "0" class:13 priority:60 color:red}
+node: {title: "n274" label: "ProjM 1 274"  info1: "Proj 274
+  mode:    M
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 267
+     0:    Start 268
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n274" targetname: "n268" label: "0" class:17 priority:10 color:blue}
+node: {title: "n271" label: "ProjX 0 271"  info1: "Proj 271
+  mode:    X
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   1
+  pred nodes:
+    -1:    Block 267
+     0:    Start 268
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n271" targetname: "n268" label: "0" class:13 priority:60 color:red}
+node: {title: "n268" label: "Start  268"  info1: "Start 268
+  mode:    T
+  visited: 19
+  irg:     LOOP_UNROLL_EXAMPLE_m4
+  arity:   0
+  pred nodes:
+    -1:    Block 267
+  Private Attributes:
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+}
+
+}
+
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m5-loop-unrolling.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m5-loop-unrolling.vcg
new file mode 100644 (file)
index 0000000..882a4ae
--- /dev/null
@@ -0,0 +1,681 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m5"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+graph: { title: "g343" label: "LOOP_UNROLL_EXAMPLE_m5" status:clustered color:white
+graph: { title: "n332"  label: "Block 332" status:clustered color:yellow
+edge: {sourcename: "n332" targetname: "n382" label: "0" class:13 priority:60 color:red}
+node: {title: "n333" label: "End  333"  info1: "End 333
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 332
+     0:    Phi 386
+  Private Attributes:
+  in loop 612 with depth 0
+"
+color: blue}
+}
+
+graph: { title: "n379"  label: "Block 379" status:clustered color:yellow
+edge: {sourcename: "n379" targetname: "n354" label: "0" class:13 priority:60 color:red}
+node: {title: "n382" label: "Return  382"  info1: "Return 382
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 379
+     0:    Phi 386
+     1:    0x4 358
+  Private Attributes:
+  in loop 612 with depth 0
+  return in method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    res 0 type: int
+"
+}
+node: {title: "n382n358" label: "0x4Is  358"  info1: "0x4 358
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n382" targetname: "n386" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n382" targetname: "n382n358" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n348"  label: "Block 348" status:clustered color:yellow
+edge: {sourcename: "n348" targetname: "n347" label: "0" class:13 priority:60 color:red}
+backedge: {sourcename: "n348" targetname: "n625" label: "1" linestyle:dashed class:13 priority:60 color:red}
+node: {title: "n386" label: "PhiM  386"  info1: "Phi 386
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 348
+     0:    Proj 341
+     1:    Proj 624
+  Private Attributes:
+  backedges:
+  in loop 615 with depth 1
+"
+color: green}
+edge: {sourcename: "n386" targetname: "n341" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n386" targetname: "n624" label: "1" class:17 priority:10 color:blue}
+node: {title: "n354" label: "ProjX 0 354"  info1: "Proj 354
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 348
+     0:    Cond 353
+  Private Attributes:
+  in loop 612 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n354" targetname: "n353" label: "0" class:13 priority:60 color:red}
+node: {title: "n355" label: "ProjX 1 355"  info1: "Proj 355
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 348
+     0:    Cond 353
+  Private Attributes:
+  in loop 614 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n355" targetname: "n353" label: "0" class:13 priority:60 color:red}
+node: {title: "n353" label: "Cond  353"  info1: "Cond 353
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 348
+     0:    Proj 352
+  Private Attributes:
+  in loop 614 with depth 2
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n353" targetname: "n352" label: "0" class:1  priority:50}
+node: {title: "n352" label: "Projb Lt 352"  info1: "Proj 352
+  mode:    b
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 348
+     0:    Cmp 351
+  Private Attributes:
+  in loop 614 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n352" targetname: "n351" label: "0" class:1  priority:50}
+node: {title: "n351" label: "Cmp  351"  info1: "Cmp 351
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 348
+     0:    0x0 350
+     1:    Phi 387
+  Private Attributes:
+  in loop 614 with depth 2
+"
+}
+node: {title: "n351n350" label: "0x0Is  350"  info1: "0x0 350
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n351" targetname: "n351n350" label: "0" class:16 priority:10}
+edge: {sourcename: "n351" targetname: "n387" label: "1" class:1  priority:50}
+node: {title: "n387" label: "PhiIs  387"  info1: "Phi 387
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 348
+     0:    0xA 345
+     1:    Sub 618
+  Private Attributes:
+  backedges:
+  in loop 613 with depth 1
+"
+color: green}
+node: {title: "n387n345" label: "0xAIs  345"  info1: "0xA 345
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n387" targetname: "n387n345" label: "0" class:16 priority:10}
+edge: {sourcename: "n387" targetname: "n618" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n344"  label: "Block 344" status:clustered color:yellow
+edge: {sourcename: "n344" targetname: "n338" label: "0" class:13 priority:60 color:red}
+node: {title: "n347" label: "Jmp  347"  info1: "Jmp 347
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 344
+  Private Attributes:
+  in loop 612 with depth 0
+"
+}
+}
+
+graph: { title: "n626"  label: "Block 626" status:clustered color:yellow
+edge: {sourcename: "n626" targetname: "n373" label: "0" class:13 priority:60 color:red}
+node: {title: "n624" label: "ProjM 0 624"  info1: "Proj 624
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 626
+     0:    Store 623
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n624" targetname: "n623" label: "0" class:17 priority:10 color:blue}
+node: {title: "n623" label: "Store  623"  info1: "Store 623
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   3
+  pred nodes:
+    -1:    Block 626
+     0:    Proj 372
+     1:    Add 622
+     2:    0x13 368
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n623n368" label: "0x13Is  368"  info1: "0x13 368
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n623" targetname: "n372" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n623" targetname: "n622" label: "1" class:1  priority:50}
+edge: {sourcename: "n623" targetname: "n623n368" label: "2" class:16 priority:10}
+node: {title: "n622" label: "AddP  622"  info1: "Add 622
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 626
+     0:    0x5 362
+     1:    Add 621
+  Private Attributes:
+"
+}
+node: {title: "n622n362" label: "0x5Is  362"  info1: "0x5 362
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n622" targetname: "n622n362" label: "0" class:16 priority:10}
+edge: {sourcename: "n622" targetname: "n621" label: "1" class:1  priority:50}
+node: {title: "n621" label: "AddP  621"  info1: "Add 621
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 626
+     0:    0x4 358
+     1:    Add 620
+  Private Attributes:
+"
+}
+node: {title: "n621n358" label: "0x4Is  358"  info1: "0x4 358
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n621" targetname: "n621n358" label: "0" class:16 priority:10}
+edge: {sourcename: "n621" targetname: "n620" label: "1" class:1  priority:50}
+node: {title: "n620" label: "AddP  620"  info1: "Add 620
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 626
+     0:    Mul 619
+     1:    SymC &a 346
+  Private Attributes:
+"
+}
+node: {title: "n620n346" label: "SymC &a  346"  info1: "SymC &a 346
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (330)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n620" targetname: "n619" label: "0" class:1  priority:50}
+edge: {sourcename: "n620" targetname: "n620n346" label: "1" class:16 priority:10}
+node: {title: "n619" label: "MulIs  619"  info1: "Mul 619
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 626
+     0:    0x4 358
+     1:    Sub 618
+  Private Attributes:
+"
+}
+node: {title: "n619n358" label: "0x4Is  358"  info1: "0x4 358
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n619" targetname: "n619n358" label: "0" class:16 priority:10}
+edge: {sourcename: "n619" targetname: "n618" label: "1" class:1  priority:50}
+node: {title: "n625" label: "Jmp  625"  info1: "Jmp 625
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 626
+  Private Attributes:
+"
+}
+node: {title: "n618" label: "SubIs  618"  info1: "Sub 618
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 626
+     0:    Sub 360
+     1:    0x1 357
+  Private Attributes:
+"
+}
+node: {title: "n618n357" label: "0x1Is  357"  info1: "0x1 357
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n618" targetname: "n360" label: "0" class:16 priority:10}
+edge: {sourcename: "n618" targetname: "n618n357" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n356"  label: "Block 356" status:clustered color:yellow
+edge: {sourcename: "n356" targetname: "n355" label: "0" class:13 priority:60 color:red}
+node: {title: "n372" label: "ProjM 0 372"  info1: "Proj 372
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 356
+     0:    Store 370
+  Private Attributes:
+  in loop 615 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n372" targetname: "n370" label: "0" class:17 priority:10 color:blue}
+node: {title: "n370" label: "Store  370"  info1: "Store 370
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   3
+  pred nodes:
+    -1:    Block 356
+     0:    Phi 386
+     1:    Add 367
+     2:    0x13 368
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 615 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n370n368" label: "0x13Is  368"  info1: "0x13 368
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n370" targetname: "n386" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n370" targetname: "n367" label: "1" class:1  priority:50}
+edge: {sourcename: "n370" targetname: "n370n368" label: "2" class:16 priority:10}
+node: {title: "n367" label: "AddP  367"  info1: "Add 367
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 356
+     0:    0x5 362
+     1:    Add 366
+  Private Attributes:
+  in loop 612 with depth 0
+"
+}
+node: {title: "n367n362" label: "0x5Is  362"  info1: "0x5 362
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n367" targetname: "n367n362" label: "0" class:16 priority:10}
+edge: {sourcename: "n367" targetname: "n366" label: "1" class:1  priority:50}
+node: {title: "n366" label: "AddP  366"  info1: "Add 366
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 356
+     0:    0x4 358
+     1:    Add 365
+  Private Attributes:
+  in loop 612 with depth 0
+"
+}
+node: {title: "n366n358" label: "0x4Is  358"  info1: "0x4 358
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n366" targetname: "n366n358" label: "0" class:16 priority:10}
+edge: {sourcename: "n366" targetname: "n365" label: "1" class:1  priority:50}
+node: {title: "n365" label: "AddP  365"  info1: "Add 365
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 356
+     0:    Mul 363
+     1:    SymC &a 346
+  Private Attributes:
+  in loop 612 with depth 0
+"
+}
+node: {title: "n365n346" label: "SymC &a  346"  info1: "SymC &a 346
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (330)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n365" targetname: "n363" label: "0" class:1  priority:50}
+edge: {sourcename: "n365" targetname: "n365n346" label: "1" class:16 priority:10}
+node: {title: "n363" label: "MulIs  363"  info1: "Mul 363
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 356
+     0:    0x4 358
+     1:    Sub 360
+  Private Attributes:
+  in loop 612 with depth 0
+"
+}
+node: {title: "n363n358" label: "0x4Is  358"  info1: "0x4 358
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n363" targetname: "n363n358" label: "0" class:16 priority:10}
+edge: {sourcename: "n363" targetname: "n360" label: "1" class:1  priority:50}
+node: {title: "n373" label: "Jmp  373"  info1: "Jmp 373
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 356
+  Private Attributes:
+  in loop 614 with depth 2
+"
+}
+node: {title: "n360" label: "SubIs  360"  info1: "Sub 360
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 356
+     0:    Phi 387
+     1:    0x1 357
+  Private Attributes:
+  in loop 613 with depth 1
+"
+}
+node: {title: "n360n357" label: "0x1Is  357"  info1: "0x1 357
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n360" targetname: "n387" label: "0" class:16 priority:10}
+edge: {sourcename: "n360" targetname: "n360n357" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n334"  label: "Block 334" status:clustered color:yellow
+edge: {sourcename: "n334" targetname: "n338" label: "0" class:13 priority:60 color:red}
+node: {title: "n341" label: "ProjM 1 341"  info1: "Proj 341
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 334
+     0:    Start 335
+  Private Attributes:
+  in loop 612 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n341" targetname: "n335" label: "0" class:17 priority:10 color:blue}
+node: {title: "n338" label: "ProjX 0 338"  info1: "Proj 338
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 334
+     0:    Start 335
+  Private Attributes:
+  in loop 612 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n338" targetname: "n335" label: "0" class:13 priority:60 color:red}
+node: {title: "n335" label: "Start  335"  info1: "Start 335
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+}
+
+}
+
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m5-looptree.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m5-looptree.vcg
new file mode 100644 (file)
index 0000000..6374ee1
--- /dev/null
@@ -0,0 +1,69 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m5"
+display_edge_labels: yes
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: top_to_bottom
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+node: {title: "l616" label: "loop 0, 1 sons, 4 nodes"  info1: " loop nr: 616
+ The loop was analyzed 0 times."}
+node: { title: "l616-0-nodes" color: lightyellow label: "Block  334
+Block  344" }
+edge: {sourcename: "l616" targetname: "l616-0-nodes" label:"0...1"}
+edge: {sourcename: "l616" targetname: "l617" color: darkgreen label: "2"}
+node: {title: "l617" label: "loop 1, 0 sons, 2 nodes"  info1: " loop nr: 617
+ The loop was analyzed 0 times."}
+node: { title: "l617-0-nodes" color: lightyellow label: "Block  348     loop head!
+Block  356" }
+edge: {sourcename: "l617" targetname: "l617-0-nodes" label:"0...1"}
+node: { title: "l616-3-nodes" color: lightyellow label: "Block  379
+Block  332" }
+edge: {sourcename: "l616" targetname: "l616-3-nodes" label:"3...4"}
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m5-pure.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m5-pure.vcg
new file mode 100644 (file)
index 0000000..915398c
--- /dev/null
@@ -0,0 +1,577 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m5"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+node: {title: "n335" label: "Start  335"  info1: "Start 335
+  mode:    T
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+edge: { sourcename: "n335" targetname: "n334" class:2  priority:50 linestyle:dotted}
+node: {title: "n338" label: "ProjX 0 338"  info1: "Proj 338
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 334
+     0:    Start 335
+  Private Attributes:
+  in loop 612 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n338" targetname: "n335" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n338" targetname: "n334" class:2  priority:50 linestyle:dotted}
+node: {title: "n334" label: "Block  334"  info1: "Block 334
+  mode:    BB
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+     0:    Proj 338
+  Private Attributes:
+  backedges:
+  in loop 612 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n334" targetname: "n338" label: "0" class:13 priority:60 color:red}
+node: {title: "n360" label: "SubIs  360"  info1: "Sub 360
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 356
+     0:    Phi 387
+     1:    0x1 357
+  Private Attributes:
+  in loop 613 with depth 1
+"
+}
+node: {title: "n360n357" label: "0x1Is  357"  info1: "0x1 357
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n360" targetname: "n387" label: "0" class:16 priority:10}
+edge: {sourcename: "n360" targetname: "n360n357" label: "1" class:16 priority:10}
+edge: { sourcename: "n360" targetname: "n356" class:2  priority:50 linestyle:dotted}
+node: {title: "n387" label: "PhiIs  387"  info1: "Phi 387
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 348
+     0:    0xA 345
+     1: be Sub 360
+  Private Attributes:
+  backedges:  1
+  in loop 613 with depth 1
+"
+color: green}
+node: {title: "n387n345" label: "0xAIs  345"  info1: "0xA 345
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n387" targetname: "n387n345" label: "0" class:16 priority:10}
+backedge: {sourcename: "n387" targetname: "n360" label: "1" linestyle:dashed class:16 priority:10}
+edge: { sourcename: "n387" targetname: "n348" class:2  priority:50 linestyle:dotted}
+node: {title: "n351" label: "Cmp  351"  info1: "Cmp 351
+  mode:    T
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 348
+     0:    0x0 350
+     1:    Phi 387
+  Private Attributes:
+  in loop 614 with depth 2
+"
+}
+node: {title: "n351n350" label: "0x0Is  350"  info1: "0x0 350
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n351" targetname: "n351n350" label: "0" class:16 priority:10}
+edge: {sourcename: "n351" targetname: "n387" label: "1" class:1  priority:50}
+edge: { sourcename: "n351" targetname: "n348" class:2  priority:50 linestyle:dotted}
+node: {title: "n352" label: "Projb Lt 352"  info1: "Proj 352
+  mode:    b
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 348
+     0:    Cmp 351
+  Private Attributes:
+  in loop 614 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n352" targetname: "n351" label: "0" class:1  priority:50}
+edge: { sourcename: "n352" targetname: "n348" class:2  priority:50 linestyle:dotted}
+node: {title: "n353" label: "Cond  353"  info1: "Cond 353
+  mode:    T
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 348
+     0:    Proj 352
+  Private Attributes:
+  in loop 614 with depth 2
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n353" targetname: "n352" label: "0" class:1  priority:50}
+edge: { sourcename: "n353" targetname: "n348" class:2  priority:50 linestyle:dotted}
+node: {title: "n355" label: "ProjX 1 355"  info1: "Proj 355
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 348
+     0:    Cond 353
+  Private Attributes:
+  in loop 614 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n355" targetname: "n353" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n355" targetname: "n348" class:2  priority:50 linestyle:dotted}
+node: {title: "n356" label: "Block  356"  info1: "Block 356
+  mode:    BB
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+     0:    Proj 355
+  Private Attributes:
+  backedges:
+  in loop 614 with depth 2
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n356" targetname: "n355" label: "0" class:13 priority:60 color:red}
+node: {title: "n373" label: "Jmp  373"  info1: "Jmp 373
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 356
+  Private Attributes:
+  in loop 614 with depth 2
+"
+}
+edge: { sourcename: "n373" targetname: "n356" class:2  priority:50 linestyle:dotted}
+node: {title: "n344" label: "Block  344"  info1: "Block 344
+  mode:    BB
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+     0:    Proj 338
+  Private Attributes:
+  backedges:
+  in loop 612 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n344" targetname: "n338" label: "0" class:13 priority:60 color:red}
+node: {title: "n347" label: "Jmp  347"  info1: "Jmp 347
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 344
+  Private Attributes:
+  in loop 612 with depth 0
+"
+}
+edge: { sourcename: "n347" targetname: "n344" class:2  priority:50 linestyle:dotted}
+node: {title: "n348" label: "Block  348"  info1: "Block 348
+  mode:    BB
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+     0:    Jmp 347
+     1: be Jmp 373
+  Private Attributes:
+  backedges:  1
+  in loop 614 with depth 2
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n348" targetname: "n347" label: "0" class:13 priority:60 color:red}
+backedge: {sourcename: "n348" targetname: "n373" label: "1" linestyle:dashed class:13 priority:60 color:red}
+node: {title: "n354" label: "ProjX 0 354"  info1: "Proj 354
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 348
+     0:    Cond 353
+  Private Attributes:
+  in loop 612 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n354" targetname: "n353" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n354" targetname: "n348" class:2  priority:50 linestyle:dotted}
+node: {title: "n379" label: "Block  379"  info1: "Block 379
+  mode:    BB
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+     0:    Proj 354
+  Private Attributes:
+  backedges:
+  in loop 612 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n379" targetname: "n354" label: "0" class:13 priority:60 color:red}
+node: {title: "n363" label: "MulIs  363"  info1: "Mul 363
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 356
+     0:    0x4 358
+     1:    Sub 360
+  Private Attributes:
+  in loop 612 with depth 0
+"
+}
+node: {title: "n363n358" label: "0x4Is  358"  info1: "0x4 358
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n363" targetname: "n363n358" label: "0" class:16 priority:10}
+edge: {sourcename: "n363" targetname: "n360" label: "1" class:1  priority:50}
+edge: { sourcename: "n363" targetname: "n356" class:2  priority:50 linestyle:dotted}
+node: {title: "n365" label: "AddP  365"  info1: "Add 365
+  mode:    P
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 356
+     0:    Mul 363
+     1:    SymC &a 346
+  Private Attributes:
+  in loop 612 with depth 0
+"
+}
+node: {title: "n365n346" label: "SymC &a  346"  info1: "SymC &a 346
+  mode:    P
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (330)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n365" targetname: "n363" label: "0" class:1  priority:50}
+edge: {sourcename: "n365" targetname: "n365n346" label: "1" class:16 priority:10}
+edge: { sourcename: "n365" targetname: "n356" class:2  priority:50 linestyle:dotted}
+node: {title: "n366" label: "AddP  366"  info1: "Add 366
+  mode:    P
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 356
+     0:    0x4 358
+     1:    Add 365
+  Private Attributes:
+  in loop 612 with depth 0
+"
+}
+node: {title: "n366n358" label: "0x4Is  358"  info1: "0x4 358
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n366" targetname: "n366n358" label: "0" class:16 priority:10}
+edge: {sourcename: "n366" targetname: "n365" label: "1" class:1  priority:50}
+edge: { sourcename: "n366" targetname: "n356" class:2  priority:50 linestyle:dotted}
+node: {title: "n367" label: "AddP  367"  info1: "Add 367
+  mode:    P
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 356
+     0:    0x5 362
+     1:    Add 366
+  Private Attributes:
+  in loop 612 with depth 0
+"
+}
+node: {title: "n367n362" label: "0x5Is  362"  info1: "0x5 362
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n367" targetname: "n367n362" label: "0" class:16 priority:10}
+edge: {sourcename: "n367" targetname: "n366" label: "1" class:1  priority:50}
+edge: { sourcename: "n367" targetname: "n356" class:2  priority:50 linestyle:dotted}
+node: {title: "n370" label: "Store  370"  info1: "Store 370
+  mode:    T
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   3
+  pred nodes:
+    -1:    Block 356
+     0:    Phi 386
+     1:    Add 367
+     2:    0x13 368
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 615 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n370n368" label: "0x13Is  368"  info1: "0x13 368
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n370" targetname: "n386" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n370" targetname: "n367" label: "1" class:1  priority:50}
+edge: {sourcename: "n370" targetname: "n370n368" label: "2" class:16 priority:10}
+edge: { sourcename: "n370" targetname: "n356" class:2  priority:50 linestyle:dotted}
+node: {title: "n372" label: "ProjM 0 372"  info1: "Proj 372
+  mode:    M
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 356
+     0:    Store 370
+  Private Attributes:
+  in loop 615 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n372" targetname: "n370" label: "0" class:17 priority:10 color:blue}
+edge: { sourcename: "n372" targetname: "n356" class:2  priority:50 linestyle:dotted}
+node: {title: "n341" label: "ProjM 1 341"  info1: "Proj 341
+  mode:    M
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 334
+     0:    Start 335
+  Private Attributes:
+  in loop 612 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n341" targetname: "n335" label: "0" class:17 priority:10 color:blue}
+edge: { sourcename: "n341" targetname: "n334" class:2  priority:50 linestyle:dotted}
+node: {title: "n386" label: "PhiM  386"  info1: "Phi 386
+  mode:    M
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 348
+     0:    Proj 341
+     1: be Proj 372
+  Private Attributes:
+  backedges:  1
+  in loop 615 with depth 1
+"
+color: green}
+edge: {sourcename: "n386" targetname: "n341" label: "0" class:17 priority:10 color:blue}
+backedge: {sourcename: "n386" targetname: "n372" label: "1" linestyle:dashed class:17 priority:10 color:blue}
+edge: { sourcename: "n386" targetname: "n348" class:2  priority:50 linestyle:dotted}
+node: {title: "n382" label: "Return  382"  info1: "Return 382
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 379
+     0:    Phi 386
+     1:    0x4 358
+  Private Attributes:
+  in loop 612 with depth 0
+  return in method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    res 0 type: int
+"
+}
+node: {title: "n382n358" label: "0x4Is  358"  info1: "0x4 358
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  in loop 612 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n382" targetname: "n386" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n382" targetname: "n382n358" label: "1" class:16 priority:10}
+edge: { sourcename: "n382" targetname: "n379" class:2  priority:50 linestyle:dotted}
+node: {title: "n332" label: "Block  332"  info1: "Block 332
+  mode:    BB
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+     0:    Return 382
+  Private Attributes:
+  backedges:
+  in loop 612 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n332" targetname: "n382" label: "0" class:13 priority:60 color:red}
+node: {title: "n333" label: "End  333"  info1: "End 333
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 332
+     0:    Phi 386
+  Private Attributes:
+  in loop 612 with depth 0
+"
+color: blue}
+edge: { sourcename: "n333" targetname: "n332" class:2  priority:50 linestyle:dotted}
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m5.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m5.vcg
new file mode 100644 (file)
index 0000000..f86cb98
--- /dev/null
@@ -0,0 +1,462 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m5"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+graph: { title: "g343" label: "LOOP_UNROLL_EXAMPLE_m5" status:clustered color:white
+graph: { title: "n332"  label: "Block 332" status:clustered color:yellow
+edge: {sourcename: "n332" targetname: "n382" label: "0" class:13 priority:60 color:red}
+node: {title: "n333" label: "End  333"  info1: "End 333
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 332
+     0:    Phi 386
+  Private Attributes:
+"
+color: blue}
+}
+
+graph: { title: "n379"  label: "Block 379" status:clustered color:yellow
+edge: {sourcename: "n379" targetname: "n354" label: "0" class:13 priority:60 color:red}
+node: {title: "n382" label: "Return  382"  info1: "Return 382
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 379
+     0:    Phi 386
+     1:    0x4 358
+  Private Attributes:
+  return in method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    res 0 type: int
+"
+}
+node: {title: "n382n358" label: "0x4Is  358"  info1: "0x4 358
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n382" targetname: "n386" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n382" targetname: "n382n358" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n348"  label: "Block 348" status:clustered color:yellow
+edge: {sourcename: "n348" targetname: "n347" label: "0" class:13 priority:60 color:red}
+edge: {sourcename: "n348" targetname: "n373" label: "1" class:13 priority:60 color:red}
+node: {title: "n386" label: "PhiM  386"  info1: "Phi 386
+  mode:    M
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 348
+     0:    Proj 341
+     1:    Proj 372
+  Private Attributes:
+  backedges:
+"
+color: green}
+edge: {sourcename: "n386" targetname: "n341" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n386" targetname: "n372" label: "1" class:17 priority:10 color:blue}
+node: {title: "n354" label: "ProjX 0 354"  info1: "Proj 354
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 348
+     0:    Cond 353
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n354" targetname: "n353" label: "0" class:13 priority:60 color:red}
+node: {title: "n355" label: "ProjX 1 355"  info1: "Proj 355
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 348
+     0:    Cond 353
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n355" targetname: "n353" label: "0" class:13 priority:60 color:red}
+node: {title: "n353" label: "Cond  353"  info1: "Cond 353
+  mode:    T
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 348
+     0:    Proj 352
+  Private Attributes:
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n353" targetname: "n352" label: "0" class:1  priority:50}
+node: {title: "n352" label: "Projb Lt 352"  info1: "Proj 352
+  mode:    b
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 348
+     0:    Cmp 351
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n352" targetname: "n351" label: "0" class:1  priority:50}
+node: {title: "n351" label: "Cmp  351"  info1: "Cmp 351
+  mode:    T
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 348
+     0:    0x0 350
+     1:    Phi 387
+  Private Attributes:
+"
+}
+node: {title: "n351n350" label: "0x0Is  350"  info1: "0x0 350
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n351" targetname: "n351n350" label: "0" class:16 priority:10}
+edge: {sourcename: "n351" targetname: "n387" label: "1" class:1  priority:50}
+node: {title: "n387" label: "PhiIs  387"  info1: "Phi 387
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 348
+     0:    0xA 345
+     1:    Sub 360
+  Private Attributes:
+  backedges:
+"
+color: green}
+node: {title: "n387n345" label: "0xAIs  345"  info1: "0xA 345
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n387" targetname: "n387n345" label: "0" class:16 priority:10}
+edge: {sourcename: "n387" targetname: "n360" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n344"  label: "Block 344" status:clustered color:yellow
+edge: {sourcename: "n344" targetname: "n338" label: "0" class:13 priority:60 color:red}
+node: {title: "n347" label: "Jmp  347"  info1: "Jmp 347
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 344
+  Private Attributes:
+"
+}
+}
+
+graph: { title: "n356"  label: "Block 356" status:clustered color:yellow
+edge: {sourcename: "n356" targetname: "n355" label: "0" class:13 priority:60 color:red}
+node: {title: "n372" label: "ProjM 0 372"  info1: "Proj 372
+  mode:    M
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 356
+     0:    Store 370
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n372" targetname: "n370" label: "0" class:17 priority:10 color:blue}
+node: {title: "n370" label: "Store  370"  info1: "Store 370
+  mode:    T
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   3
+  pred nodes:
+    -1:    Block 356
+     0:    Phi 386
+     1:    Add 367
+     2:    0x13 368
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n370n368" label: "0x13Is  368"  info1: "0x13 368
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n370" targetname: "n386" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n370" targetname: "n367" label: "1" class:1  priority:50}
+edge: {sourcename: "n370" targetname: "n370n368" label: "2" class:16 priority:10}
+node: {title: "n367" label: "AddP  367"  info1: "Add 367
+  mode:    P
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 356
+     0:    0x5 362
+     1:    Add 366
+  Private Attributes:
+"
+}
+node: {title: "n367n362" label: "0x5Is  362"  info1: "0x5 362
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n367" targetname: "n367n362" label: "0" class:16 priority:10}
+edge: {sourcename: "n367" targetname: "n366" label: "1" class:1  priority:50}
+node: {title: "n366" label: "AddP  366"  info1: "Add 366
+  mode:    P
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 356
+     0:    0x4 358
+     1:    Add 365
+  Private Attributes:
+"
+}
+node: {title: "n366n358" label: "0x4Is  358"  info1: "0x4 358
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n366" targetname: "n366n358" label: "0" class:16 priority:10}
+edge: {sourcename: "n366" targetname: "n365" label: "1" class:1  priority:50}
+node: {title: "n365" label: "AddP  365"  info1: "Add 365
+  mode:    P
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 356
+     0:    Mul 363
+     1:    SymC &a 346
+  Private Attributes:
+"
+}
+node: {title: "n365n346" label: "SymC &a  346"  info1: "SymC &a 346
+  mode:    P
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  kind:   addr_ent
+  entity: entity GlobalType.a (330)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n365" targetname: "n363" label: "0" class:1  priority:50}
+edge: {sourcename: "n365" targetname: "n365n346" label: "1" class:16 priority:10}
+node: {title: "n363" label: "MulIs  363"  info1: "Mul 363
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 356
+     0:    0x4 358
+     1:    Sub 360
+  Private Attributes:
+"
+}
+node: {title: "n363n358" label: "0x4Is  358"  info1: "0x4 358
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n363" targetname: "n363n358" label: "0" class:16 priority:10}
+edge: {sourcename: "n363" targetname: "n360" label: "1" class:1  priority:50}
+node: {title: "n373" label: "Jmp  373"  info1: "Jmp 373
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 356
+  Private Attributes:
+"
+}
+node: {title: "n360" label: "SubIs  360"  info1: "Sub 360
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   2
+  pred nodes:
+    -1:    Block 356
+     0:    Phi 387
+     1:    0x1 357
+  Private Attributes:
+"
+}
+node: {title: "n360n357" label: "0x1Is  357"  info1: "0x1 357
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n360" targetname: "n387" label: "0" class:16 priority:10}
+edge: {sourcename: "n360" targetname: "n360n357" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n334"  label: "Block 334" status:clustered color:yellow
+edge: {sourcename: "n334" targetname: "n338" label: "0" class:13 priority:60 color:red}
+node: {title: "n341" label: "ProjM 1 341"  info1: "Proj 341
+  mode:    M
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 334
+     0:    Start 335
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n341" targetname: "n335" label: "0" class:17 priority:10 color:blue}
+node: {title: "n338" label: "ProjX 0 338"  info1: "Proj 338
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   1
+  pred nodes:
+    -1:    Block 334
+     0:    Start 335
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n338" targetname: "n335" label: "0" class:13 priority:60 color:red}
+node: {title: "n335" label: "Start  335"  info1: "Start 335
+  mode:    T
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m5
+  arity:   0
+  pred nodes:
+    -1:    Block 334
+  Private Attributes:
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+}
+
+}
+
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m6-loop-unrolling.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m6-loop-unrolling.vcg
new file mode 100644 (file)
index 0000000..219e6a9
--- /dev/null
@@ -0,0 +1,1164 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m6"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+graph: { title: "g409" label: "LOOP_UNROLL_EXAMPLE_m6" status:clustered color:white
+graph: { title: "n398"  label: "Block 398" status:clustered color:yellow
+edge: {sourcename: "n398" targetname: "n448" label: "0" class:13 priority:60 color:red}
+node: {title: "n399" label: "End  399"  info1: "End 399
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 398
+     0:    Phi 452
+  Private Attributes:
+  in loop 627 with depth 0
+"
+color: blue}
+}
+
+graph: { title: "n445"  label: "Block 445" status:clustered color:yellow
+edge: {sourcename: "n445" targetname: "n420" label: "0" class:13 priority:60 color:red}
+node: {title: "n448" label: "Return  448"  info1: "Return 448
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 445
+     0:    Phi 452
+     1:    0x4 425
+  Private Attributes:
+  in loop 627 with depth 0
+  return in method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    res 0 type: int
+"
+}
+node: {title: "n448n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n448" targetname: "n452" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n448" targetname: "n448n425" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n414"  label: "Block 414" status:clustered color:yellow
+edge: {sourcename: "n414" targetname: "n413" label: "0" class:13 priority:60 color:red}
+backedge: {sourcename: "n414" targetname: "n662" label: "1" linestyle:dashed class:13 priority:60 color:red}
+node: {title: "n452" label: "PhiM  452"  info1: "Phi 452
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 414
+     0:    Proj 407
+     1:    Proj 659
+  Private Attributes:
+  backedges:
+  in loop 630 with depth 1
+"
+color: green}
+edge: {sourcename: "n452" targetname: "n407" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n452" targetname: "n659" label: "1" class:17 priority:10 color:blue}
+node: {title: "n420" label: "ProjX 0 420"  info1: "Proj 420
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 414
+     0:    Cond 419
+  Private Attributes:
+  in loop 627 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n420" targetname: "n419" label: "0" class:13 priority:60 color:red}
+node: {title: "n421" label: "ProjX 1 421"  info1: "Proj 421
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 414
+     0:    Cond 419
+  Private Attributes:
+  in loop 629 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n421" targetname: "n419" label: "0" class:13 priority:60 color:red}
+node: {title: "n419" label: "Cond  419"  info1: "Cond 419
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 414
+     0:    Proj 418
+  Private Attributes:
+  in loop 629 with depth 2
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n419" targetname: "n418" label: "0" class:1  priority:50}
+node: {title: "n418" label: "Projb Ge 418"  info1: "Proj 418
+  mode:    b
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 414
+     0:    Cmp 417
+  Private Attributes:
+  in loop 629 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n418" targetname: "n417" label: "0" class:1  priority:50}
+node: {title: "n417" label: "Cmp  417"  info1: "Cmp 417
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 414
+     0:    0xB 416
+     1:    Phi 453
+  Private Attributes:
+  in loop 629 with depth 2
+"
+}
+node: {title: "n417n416" label: "0xBIs  416"  info1: "0xB 416
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n417" targetname: "n417n416" label: "0" class:16 priority:10}
+edge: {sourcename: "n417" targetname: "n453" label: "1" class:1  priority:50}
+node: {title: "n453" label: "PhiIs  453"  info1: "Phi 453
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 414
+     0:    0x0 411
+     1:    Sub 638
+  Private Attributes:
+  backedges:
+  in loop 628 with depth 1
+"
+color: green}
+node: {title: "n453n411" label: "0x0Is  411"  info1: "0x0 411
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n453" targetname: "n453n411" label: "0" class:16 priority:10}
+edge: {sourcename: "n453" targetname: "n638" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n410"  label: "Block 410" status:clustered color:yellow
+edge: {sourcename: "n410" targetname: "n404" label: "0" class:13 priority:60 color:red}
+node: {title: "n413" label: "Jmp  413"  info1: "Jmp 413
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 410
+  Private Attributes:
+  in loop 627 with depth 0
+"
+}
+}
+
+graph: { title: "n635"  label: "Block 635" status:clustered color:yellow
+edge: {sourcename: "n635" targetname: "n661" label: "0" class:13 priority:60 color:red}
+node: {title: "n659" label: "ProjM 0 659"  info1: "Proj 659
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 635
+     0:    Store 656
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n659" targetname: "n656" label: "0" class:17 priority:10 color:blue}
+node: {title: "n656" label: "Store  656"  info1: "Store 656
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   3
+  pred nodes:
+    -1:    Block 635
+     0:    Proj 658
+     1:    Add 653
+     2:    0x13 434
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n656n434" label: "0x13Is  434"  info1: "0x13 434
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n656" targetname: "n658" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n656" targetname: "n653" label: "1" class:1  priority:50}
+edge: {sourcename: "n656" targetname: "n656n434" label: "2" class:16 priority:10}
+node: {title: "n653" label: "AddP  653"  info1: "Add 653
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 635
+     0:    0x4 425
+     1:    Add 650
+  Private Attributes:
+"
+}
+node: {title: "n653n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n653" targetname: "n653n425" label: "0" class:16 priority:10}
+edge: {sourcename: "n653" targetname: "n650" label: "1" class:1  priority:50}
+node: {title: "n650" label: "AddP  650"  info1: "Add 650
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 635
+     0:    0x4 425
+     1:    Sub 647
+  Private Attributes:
+"
+}
+node: {title: "n650n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n650" targetname: "n650n425" label: "0" class:16 priority:10}
+edge: {sourcename: "n650" targetname: "n647" label: "1" class:1  priority:50}
+node: {title: "n647" label: "SubP  647"  info1: "Sub 647
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 635
+     0:    0x5 424
+     1:    Add 644
+  Private Attributes:
+"
+}
+node: {title: "n647n424" label: "0x5Is  424"  info1: "0x5 424
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n647" targetname: "n647n424" label: "0" class:16 priority:10}
+edge: {sourcename: "n647" targetname: "n644" label: "1" class:1  priority:50}
+node: {title: "n644" label: "AddP  644"  info1: "Add 644
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 635
+     0:    Mul 641
+     1:    SymC &a 412
+  Private Attributes:
+"
+}
+node: {title: "n644n412" label: "SymC &a  412"  info1: "SymC &a 412
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (396)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n644" targetname: "n641" label: "0" class:1  priority:50}
+edge: {sourcename: "n644" targetname: "n644n412" label: "1" class:16 priority:10}
+node: {title: "n641" label: "MulIs  641"  info1: "Mul 641
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 635
+     0:    0x4 425
+     1:    Sub 638
+  Private Attributes:
+"
+}
+node: {title: "n641n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n641" targetname: "n641n425" label: "0" class:16 priority:10}
+edge: {sourcename: "n641" targetname: "n638" label: "1" class:1  priority:50}
+node: {title: "n662" label: "Jmp  662"  info1: "Jmp 662
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 635
+  Private Attributes:
+"
+}
+node: {title: "n638" label: "SubIs  638"  info1: "Sub 638
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 635
+     0:    Sub 637
+     1:    0x1 423
+  Private Attributes:
+"
+}
+node: {title: "n638n423" label: "0x1Is  423"  info1: "0x1 423
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n638" targetname: "n637" label: "0" class:16 priority:10}
+edge: {sourcename: "n638" targetname: "n638n423" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n634"  label: "Block 634" status:clustered color:yellow
+edge: {sourcename: "n634" targetname: "n660" label: "0" class:13 priority:60 color:red}
+node: {title: "n658" label: "ProjM 0 658"  info1: "Proj 658
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 634
+     0:    Store 655
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n658" targetname: "n655" label: "0" class:17 priority:10 color:blue}
+node: {title: "n655" label: "Store  655"  info1: "Store 655
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   3
+  pred nodes:
+    -1:    Block 634
+     0:    Proj 657
+     1:    Add 652
+     2:    0x13 434
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n655n434" label: "0x13Is  434"  info1: "0x13 434
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n655" targetname: "n657" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n655" targetname: "n652" label: "1" class:1  priority:50}
+edge: {sourcename: "n655" targetname: "n655n434" label: "2" class:16 priority:10}
+node: {title: "n652" label: "AddP  652"  info1: "Add 652
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 634
+     0:    0x4 425
+     1:    Add 649
+  Private Attributes:
+"
+}
+node: {title: "n652n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n652" targetname: "n652n425" label: "0" class:16 priority:10}
+edge: {sourcename: "n652" targetname: "n649" label: "1" class:1  priority:50}
+node: {title: "n649" label: "AddP  649"  info1: "Add 649
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 634
+     0:    0x4 425
+     1:    Sub 646
+  Private Attributes:
+"
+}
+node: {title: "n649n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n649" targetname: "n649n425" label: "0" class:16 priority:10}
+edge: {sourcename: "n649" targetname: "n646" label: "1" class:1  priority:50}
+node: {title: "n646" label: "SubP  646"  info1: "Sub 646
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 634
+     0:    0x5 424
+     1:    Add 643
+  Private Attributes:
+"
+}
+node: {title: "n646n424" label: "0x5Is  424"  info1: "0x5 424
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n646" targetname: "n646n424" label: "0" class:16 priority:10}
+edge: {sourcename: "n646" targetname: "n643" label: "1" class:1  priority:50}
+node: {title: "n643" label: "AddP  643"  info1: "Add 643
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 634
+     0:    Mul 640
+     1:    SymC &a 412
+  Private Attributes:
+"
+}
+node: {title: "n643n412" label: "SymC &a  412"  info1: "SymC &a 412
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (396)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n643" targetname: "n640" label: "0" class:1  priority:50}
+edge: {sourcename: "n643" targetname: "n643n412" label: "1" class:16 priority:10}
+node: {title: "n640" label: "MulIs  640"  info1: "Mul 640
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 634
+     0:    0x4 425
+     1:    Sub 637
+  Private Attributes:
+"
+}
+node: {title: "n640n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n640" targetname: "n640n425" label: "0" class:16 priority:10}
+edge: {sourcename: "n640" targetname: "n637" label: "1" class:1  priority:50}
+node: {title: "n661" label: "Jmp  661"  info1: "Jmp 661
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 634
+  Private Attributes:
+"
+}
+node: {title: "n637" label: "SubIs  637"  info1: "Sub 637
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 634
+     0:    Sub 636
+     1:    0x1 423
+  Private Attributes:
+"
+}
+node: {title: "n637n423" label: "0x1Is  423"  info1: "0x1 423
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n637" targetname: "n636" label: "0" class:16 priority:10}
+edge: {sourcename: "n637" targetname: "n637n423" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n633"  label: "Block 633" status:clustered color:yellow
+edge: {sourcename: "n633" targetname: "n439" label: "0" class:13 priority:60 color:red}
+node: {title: "n657" label: "ProjM 0 657"  info1: "Proj 657
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 633
+     0:    Store 654
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n657" targetname: "n654" label: "0" class:17 priority:10 color:blue}
+node: {title: "n654" label: "Store  654"  info1: "Store 654
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   3
+  pred nodes:
+    -1:    Block 633
+     0:    Proj 438
+     1:    Add 651
+     2:    0x13 434
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n654n434" label: "0x13Is  434"  info1: "0x13 434
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n654" targetname: "n438" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n654" targetname: "n651" label: "1" class:1  priority:50}
+edge: {sourcename: "n654" targetname: "n654n434" label: "2" class:16 priority:10}
+node: {title: "n651" label: "AddP  651"  info1: "Add 651
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 633
+     0:    0x4 425
+     1:    Add 648
+  Private Attributes:
+"
+}
+node: {title: "n651n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n651" targetname: "n651n425" label: "0" class:16 priority:10}
+edge: {sourcename: "n651" targetname: "n648" label: "1" class:1  priority:50}
+node: {title: "n648" label: "AddP  648"  info1: "Add 648
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 633
+     0:    0x4 425
+     1:    Sub 645
+  Private Attributes:
+"
+}
+node: {title: "n648n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n648" targetname: "n648n425" label: "0" class:16 priority:10}
+edge: {sourcename: "n648" targetname: "n645" label: "1" class:1  priority:50}
+node: {title: "n645" label: "SubP  645"  info1: "Sub 645
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 633
+     0:    0x5 424
+     1:    Add 642
+  Private Attributes:
+"
+}
+node: {title: "n645n424" label: "0x5Is  424"  info1: "0x5 424
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n645" targetname: "n645n424" label: "0" class:16 priority:10}
+edge: {sourcename: "n645" targetname: "n642" label: "1" class:1  priority:50}
+node: {title: "n642" label: "AddP  642"  info1: "Add 642
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 633
+     0:    Mul 639
+     1:    SymC &a 412
+  Private Attributes:
+"
+}
+node: {title: "n642n412" label: "SymC &a  412"  info1: "SymC &a 412
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (396)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n642" targetname: "n639" label: "0" class:1  priority:50}
+edge: {sourcename: "n642" targetname: "n642n412" label: "1" class:16 priority:10}
+node: {title: "n639" label: "MulIs  639"  info1: "Mul 639
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 633
+     0:    0x4 425
+     1:    Sub 636
+  Private Attributes:
+"
+}
+node: {title: "n639n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n639" targetname: "n639n425" label: "0" class:16 priority:10}
+edge: {sourcename: "n639" targetname: "n636" label: "1" class:1  priority:50}
+node: {title: "n660" label: "Jmp  660"  info1: "Jmp 660
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 633
+  Private Attributes:
+"
+}
+node: {title: "n636" label: "SubIs  636"  info1: "Sub 636
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 633
+     0:    Sub 427
+     1:    0x1 423
+  Private Attributes:
+"
+}
+node: {title: "n636n423" label: "0x1Is  423"  info1: "0x1 423
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n636" targetname: "n427" label: "0" class:16 priority:10}
+edge: {sourcename: "n636" targetname: "n636n423" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n422"  label: "Block 422" status:clustered color:yellow
+edge: {sourcename: "n422" targetname: "n421" label: "0" class:13 priority:60 color:red}
+node: {title: "n438" label: "ProjM 0 438"  info1: "Proj 438
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 422
+     0:    Store 436
+  Private Attributes:
+  in loop 630 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n438" targetname: "n436" label: "0" class:17 priority:10 color:blue}
+node: {title: "n436" label: "Store  436"  info1: "Store 436
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   3
+  pred nodes:
+    -1:    Block 422
+     0:    Phi 452
+     1:    Add 433
+     2:    0x13 434
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 630 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n436n434" label: "0x13Is  434"  info1: "0x13 434
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n436" targetname: "n452" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n436" targetname: "n433" label: "1" class:1  priority:50}
+edge: {sourcename: "n436" targetname: "n436n434" label: "2" class:16 priority:10}
+node: {title: "n433" label: "AddP  433"  info1: "Add 433
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 422
+     0:    0x4 425
+     1:    Add 432
+  Private Attributes:
+  in loop 627 with depth 0
+"
+}
+node: {title: "n433n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n433" targetname: "n433n425" label: "0" class:16 priority:10}
+edge: {sourcename: "n433" targetname: "n432" label: "1" class:1  priority:50}
+node: {title: "n432" label: "AddP  432"  info1: "Add 432
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 422
+     0:    0x4 425
+     1:    Sub 431
+  Private Attributes:
+  in loop 627 with depth 0
+"
+}
+node: {title: "n432n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n432" targetname: "n432n425" label: "0" class:16 priority:10}
+edge: {sourcename: "n432" targetname: "n431" label: "1" class:1  priority:50}
+node: {title: "n431" label: "SubP  431"  info1: "Sub 431
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 422
+     0:    0x5 424
+     1:    Add 430
+  Private Attributes:
+  in loop 627 with depth 0
+"
+}
+node: {title: "n431n424" label: "0x5Is  424"  info1: "0x5 424
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n431" targetname: "n431n424" label: "0" class:16 priority:10}
+edge: {sourcename: "n431" targetname: "n430" label: "1" class:1  priority:50}
+node: {title: "n430" label: "AddP  430"  info1: "Add 430
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 422
+     0:    Mul 428
+     1:    SymC &a 412
+  Private Attributes:
+  in loop 627 with depth 0
+"
+}
+node: {title: "n430n412" label: "SymC &a  412"  info1: "SymC &a 412
+  mode:    P
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (396)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n430" targetname: "n428" label: "0" class:1  priority:50}
+edge: {sourcename: "n430" targetname: "n430n412" label: "1" class:16 priority:10}
+node: {title: "n428" label: "MulIs  428"  info1: "Mul 428
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 422
+     0:    0x4 425
+     1:    Sub 427
+  Private Attributes:
+  in loop 627 with depth 0
+"
+}
+node: {title: "n428n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n428" targetname: "n428n425" label: "0" class:16 priority:10}
+edge: {sourcename: "n428" targetname: "n427" label: "1" class:1  priority:50}
+node: {title: "n439" label: "Jmp  439"  info1: "Jmp 439
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 422
+  Private Attributes:
+  in loop 629 with depth 2
+"
+}
+node: {title: "n427" label: "SubIs  427"  info1: "Sub 427
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 422
+     0:    Phi 453
+     1:    0x1 423
+  Private Attributes:
+  in loop 628 with depth 1
+"
+}
+node: {title: "n427n423" label: "0x1Is  423"  info1: "0x1 423
+  mode:    Is
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n427" targetname: "n453" label: "0" class:16 priority:10}
+edge: {sourcename: "n427" targetname: "n427n423" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n400"  label: "Block 400" status:clustered color:yellow
+edge: {sourcename: "n400" targetname: "n404" label: "0" class:13 priority:60 color:red}
+node: {title: "n407" label: "ProjM 1 407"  info1: "Proj 407
+  mode:    M
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 400
+     0:    Start 401
+  Private Attributes:
+  in loop 627 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n407" targetname: "n401" label: "0" class:17 priority:10 color:blue}
+node: {title: "n404" label: "ProjX 0 404"  info1: "Proj 404
+  mode:    X
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 400
+     0:    Start 401
+  Private Attributes:
+  in loop 627 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n404" targetname: "n401" label: "0" class:13 priority:60 color:red}
+node: {title: "n401" label: "Start  401"  info1: "Start 401
+  mode:    T
+  visited: 27
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+}
+
+}
+
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m6-looptree.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m6-looptree.vcg
new file mode 100644 (file)
index 0000000..4942710
--- /dev/null
@@ -0,0 +1,69 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m6"
+display_edge_labels: yes
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: top_to_bottom
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+node: {title: "l631" label: "loop 0, 1 sons, 4 nodes"  info1: " loop nr: 631
+ The loop was analyzed 0 times."}
+node: { title: "l631-0-nodes" color: lightyellow label: "Block  400
+Block  410" }
+edge: {sourcename: "l631" targetname: "l631-0-nodes" label:"0...1"}
+edge: {sourcename: "l631" targetname: "l632" color: darkgreen label: "2"}
+node: {title: "l632" label: "loop 1, 0 sons, 2 nodes"  info1: " loop nr: 632
+ The loop was analyzed 0 times."}
+node: { title: "l632-0-nodes" color: lightyellow label: "Block  414     loop head!
+Block  422" }
+edge: {sourcename: "l632" targetname: "l632-0-nodes" label:"0...1"}
+node: { title: "l631-3-nodes" color: lightyellow label: "Block  445
+Block  398" }
+edge: {sourcename: "l631" targetname: "l631-3-nodes" label:"3...4"}
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m6-pure.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m6-pure.vcg
new file mode 100644 (file)
index 0000000..6b3e847
--- /dev/null
@@ -0,0 +1,605 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m6"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+node: {title: "n401" label: "Start  401"  info1: "Start 401
+  mode:    T
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+edge: { sourcename: "n401" targetname: "n400" class:2  priority:50 linestyle:dotted}
+node: {title: "n404" label: "ProjX 0 404"  info1: "Proj 404
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 400
+     0:    Start 401
+  Private Attributes:
+  in loop 627 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n404" targetname: "n401" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n404" targetname: "n400" class:2  priority:50 linestyle:dotted}
+node: {title: "n400" label: "Block  400"  info1: "Block 400
+  mode:    BB
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+     0:    Proj 404
+  Private Attributes:
+  backedges:
+  in loop 627 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n400" targetname: "n404" label: "0" class:13 priority:60 color:red}
+node: {title: "n427" label: "SubIs  427"  info1: "Sub 427
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 422
+     0:    Phi 453
+     1:    0x1 423
+  Private Attributes:
+  in loop 628 with depth 1
+"
+}
+node: {title: "n427n423" label: "0x1Is  423"  info1: "0x1 423
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n427" targetname: "n453" label: "0" class:16 priority:10}
+edge: {sourcename: "n427" targetname: "n427n423" label: "1" class:16 priority:10}
+edge: { sourcename: "n427" targetname: "n422" class:2  priority:50 linestyle:dotted}
+node: {title: "n453" label: "PhiIs  453"  info1: "Phi 453
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 414
+     0:    0x0 411
+     1: be Sub 427
+  Private Attributes:
+  backedges:  1
+  in loop 628 with depth 1
+"
+color: green}
+node: {title: "n453n411" label: "0x0Is  411"  info1: "0x0 411
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n453" targetname: "n453n411" label: "0" class:16 priority:10}
+backedge: {sourcename: "n453" targetname: "n427" label: "1" linestyle:dashed class:16 priority:10}
+edge: { sourcename: "n453" targetname: "n414" class:2  priority:50 linestyle:dotted}
+node: {title: "n417" label: "Cmp  417"  info1: "Cmp 417
+  mode:    T
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 414
+     0:    0xB 416
+     1:    Phi 453
+  Private Attributes:
+  in loop 629 with depth 2
+"
+}
+node: {title: "n417n416" label: "0xBIs  416"  info1: "0xB 416
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n417" targetname: "n417n416" label: "0" class:16 priority:10}
+edge: {sourcename: "n417" targetname: "n453" label: "1" class:1  priority:50}
+edge: { sourcename: "n417" targetname: "n414" class:2  priority:50 linestyle:dotted}
+node: {title: "n418" label: "Projb Ge 418"  info1: "Proj 418
+  mode:    b
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 414
+     0:    Cmp 417
+  Private Attributes:
+  in loop 629 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n418" targetname: "n417" label: "0" class:1  priority:50}
+edge: { sourcename: "n418" targetname: "n414" class:2  priority:50 linestyle:dotted}
+node: {title: "n419" label: "Cond  419"  info1: "Cond 419
+  mode:    T
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 414
+     0:    Proj 418
+  Private Attributes:
+  in loop 629 with depth 2
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n419" targetname: "n418" label: "0" class:1  priority:50}
+edge: { sourcename: "n419" targetname: "n414" class:2  priority:50 linestyle:dotted}
+node: {title: "n421" label: "ProjX 1 421"  info1: "Proj 421
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 414
+     0:    Cond 419
+  Private Attributes:
+  in loop 629 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n421" targetname: "n419" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n421" targetname: "n414" class:2  priority:50 linestyle:dotted}
+node: {title: "n422" label: "Block  422"  info1: "Block 422
+  mode:    BB
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+     0:    Proj 421
+  Private Attributes:
+  backedges:
+  in loop 629 with depth 2
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n422" targetname: "n421" label: "0" class:13 priority:60 color:red}
+node: {title: "n439" label: "Jmp  439"  info1: "Jmp 439
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 422
+  Private Attributes:
+  in loop 629 with depth 2
+"
+}
+edge: { sourcename: "n439" targetname: "n422" class:2  priority:50 linestyle:dotted}
+node: {title: "n410" label: "Block  410"  info1: "Block 410
+  mode:    BB
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+     0:    Proj 404
+  Private Attributes:
+  backedges:
+  in loop 627 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n410" targetname: "n404" label: "0" class:13 priority:60 color:red}
+node: {title: "n413" label: "Jmp  413"  info1: "Jmp 413
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 410
+  Private Attributes:
+  in loop 627 with depth 0
+"
+}
+edge: { sourcename: "n413" targetname: "n410" class:2  priority:50 linestyle:dotted}
+node: {title: "n414" label: "Block  414"  info1: "Block 414
+  mode:    BB
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+     0:    Jmp 413
+     1: be Jmp 439
+  Private Attributes:
+  backedges:  1
+  in loop 629 with depth 2
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n414" targetname: "n413" label: "0" class:13 priority:60 color:red}
+backedge: {sourcename: "n414" targetname: "n439" label: "1" linestyle:dashed class:13 priority:60 color:red}
+node: {title: "n420" label: "ProjX 0 420"  info1: "Proj 420
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 414
+     0:    Cond 419
+  Private Attributes:
+  in loop 627 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n420" targetname: "n419" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n420" targetname: "n414" class:2  priority:50 linestyle:dotted}
+node: {title: "n445" label: "Block  445"  info1: "Block 445
+  mode:    BB
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+     0:    Proj 420
+  Private Attributes:
+  backedges:
+  in loop 627 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n445" targetname: "n420" label: "0" class:13 priority:60 color:red}
+node: {title: "n428" label: "MulIs  428"  info1: "Mul 428
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 422
+     0:    0x4 425
+     1:    Sub 427
+  Private Attributes:
+  in loop 627 with depth 0
+"
+}
+node: {title: "n428n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n428" targetname: "n428n425" label: "0" class:16 priority:10}
+edge: {sourcename: "n428" targetname: "n427" label: "1" class:1  priority:50}
+edge: { sourcename: "n428" targetname: "n422" class:2  priority:50 linestyle:dotted}
+node: {title: "n430" label: "AddP  430"  info1: "Add 430
+  mode:    P
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 422
+     0:    Mul 428
+     1:    SymC &a 412
+  Private Attributes:
+  in loop 627 with depth 0
+"
+}
+node: {title: "n430n412" label: "SymC &a  412"  info1: "SymC &a 412
+  mode:    P
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (396)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n430" targetname: "n428" label: "0" class:1  priority:50}
+edge: {sourcename: "n430" targetname: "n430n412" label: "1" class:16 priority:10}
+edge: { sourcename: "n430" targetname: "n422" class:2  priority:50 linestyle:dotted}
+node: {title: "n431" label: "SubP  431"  info1: "Sub 431
+  mode:    P
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 422
+     0:    0x5 424
+     1:    Add 430
+  Private Attributes:
+  in loop 627 with depth 0
+"
+}
+node: {title: "n431n424" label: "0x5Is  424"  info1: "0x5 424
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n431" targetname: "n431n424" label: "0" class:16 priority:10}
+edge: {sourcename: "n431" targetname: "n430" label: "1" class:1  priority:50}
+edge: { sourcename: "n431" targetname: "n422" class:2  priority:50 linestyle:dotted}
+node: {title: "n432" label: "AddP  432"  info1: "Add 432
+  mode:    P
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 422
+     0:    0x4 425
+     1:    Sub 431
+  Private Attributes:
+  in loop 627 with depth 0
+"
+}
+node: {title: "n432n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n432" targetname: "n432n425" label: "0" class:16 priority:10}
+edge: {sourcename: "n432" targetname: "n431" label: "1" class:1  priority:50}
+edge: { sourcename: "n432" targetname: "n422" class:2  priority:50 linestyle:dotted}
+node: {title: "n433" label: "AddP  433"  info1: "Add 433
+  mode:    P
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 422
+     0:    0x4 425
+     1:    Add 432
+  Private Attributes:
+  in loop 627 with depth 0
+"
+}
+node: {title: "n433n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n433" targetname: "n433n425" label: "0" class:16 priority:10}
+edge: {sourcename: "n433" targetname: "n432" label: "1" class:1  priority:50}
+edge: { sourcename: "n433" targetname: "n422" class:2  priority:50 linestyle:dotted}
+node: {title: "n436" label: "Store  436"  info1: "Store 436
+  mode:    T
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   3
+  pred nodes:
+    -1:    Block 422
+     0:    Phi 452
+     1:    Add 433
+     2:    0x13 434
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 630 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n436n434" label: "0x13Is  434"  info1: "0x13 434
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n436" targetname: "n452" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n436" targetname: "n433" label: "1" class:1  priority:50}
+edge: {sourcename: "n436" targetname: "n436n434" label: "2" class:16 priority:10}
+edge: { sourcename: "n436" targetname: "n422" class:2  priority:50 linestyle:dotted}
+node: {title: "n438" label: "ProjM 0 438"  info1: "Proj 438
+  mode:    M
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 422
+     0:    Store 436
+  Private Attributes:
+  in loop 630 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n438" targetname: "n436" label: "0" class:17 priority:10 color:blue}
+edge: { sourcename: "n438" targetname: "n422" class:2  priority:50 linestyle:dotted}
+node: {title: "n407" label: "ProjM 1 407"  info1: "Proj 407
+  mode:    M
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 400
+     0:    Start 401
+  Private Attributes:
+  in loop 627 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n407" targetname: "n401" label: "0" class:17 priority:10 color:blue}
+edge: { sourcename: "n407" targetname: "n400" class:2  priority:50 linestyle:dotted}
+node: {title: "n452" label: "PhiM  452"  info1: "Phi 452
+  mode:    M
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 414
+     0:    Proj 407
+     1: be Proj 438
+  Private Attributes:
+  backedges:  1
+  in loop 630 with depth 1
+"
+color: green}
+edge: {sourcename: "n452" targetname: "n407" label: "0" class:17 priority:10 color:blue}
+backedge: {sourcename: "n452" targetname: "n438" label: "1" linestyle:dashed class:17 priority:10 color:blue}
+edge: { sourcename: "n452" targetname: "n414" class:2  priority:50 linestyle:dotted}
+node: {title: "n448" label: "Return  448"  info1: "Return 448
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 445
+     0:    Phi 452
+     1:    0x4 425
+  Private Attributes:
+  in loop 627 with depth 0
+  return in method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    res 0 type: int
+"
+}
+node: {title: "n448n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  in loop 627 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n448" targetname: "n452" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n448" targetname: "n448n425" label: "1" class:16 priority:10}
+edge: { sourcename: "n448" targetname: "n445" class:2  priority:50 linestyle:dotted}
+node: {title: "n398" label: "Block  398"  info1: "Block 398
+  mode:    BB
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+     0:    Return 448
+  Private Attributes:
+  backedges:
+  in loop 627 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n398" targetname: "n448" label: "0" class:13 priority:60 color:red}
+node: {title: "n399" label: "End  399"  info1: "End 399
+  mode:    X
+  visited: 17
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 398
+     0:    Phi 452
+  Private Attributes:
+  in loop 627 with depth 0
+"
+color: blue}
+edge: { sourcename: "n399" targetname: "n398" class:2  priority:50 linestyle:dotted}
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m6.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m6.vcg
new file mode 100644 (file)
index 0000000..9122ef9
--- /dev/null
@@ -0,0 +1,487 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m6"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+graph: { title: "g409" label: "LOOP_UNROLL_EXAMPLE_m6" status:clustered color:white
+graph: { title: "n398"  label: "Block 398" status:clustered color:yellow
+edge: {sourcename: "n398" targetname: "n448" label: "0" class:13 priority:60 color:red}
+node: {title: "n399" label: "End  399"  info1: "End 399
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 398
+     0:    Phi 452
+  Private Attributes:
+"
+color: blue}
+}
+
+graph: { title: "n445"  label: "Block 445" status:clustered color:yellow
+edge: {sourcename: "n445" targetname: "n420" label: "0" class:13 priority:60 color:red}
+node: {title: "n448" label: "Return  448"  info1: "Return 448
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 445
+     0:    Phi 452
+     1:    0x4 425
+  Private Attributes:
+  return in method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    res 0 type: int
+"
+}
+node: {title: "n448n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n448" targetname: "n452" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n448" targetname: "n448n425" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n414"  label: "Block 414" status:clustered color:yellow
+edge: {sourcename: "n414" targetname: "n413" label: "0" class:13 priority:60 color:red}
+edge: {sourcename: "n414" targetname: "n439" label: "1" class:13 priority:60 color:red}
+node: {title: "n452" label: "PhiM  452"  info1: "Phi 452
+  mode:    M
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 414
+     0:    Proj 407
+     1:    Proj 438
+  Private Attributes:
+  backedges:
+"
+color: green}
+edge: {sourcename: "n452" targetname: "n407" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n452" targetname: "n438" label: "1" class:17 priority:10 color:blue}
+node: {title: "n420" label: "ProjX 0 420"  info1: "Proj 420
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 414
+     0:    Cond 419
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n420" targetname: "n419" label: "0" class:13 priority:60 color:red}
+node: {title: "n421" label: "ProjX 1 421"  info1: "Proj 421
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 414
+     0:    Cond 419
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n421" targetname: "n419" label: "0" class:13 priority:60 color:red}
+node: {title: "n419" label: "Cond  419"  info1: "Cond 419
+  mode:    T
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 414
+     0:    Proj 418
+  Private Attributes:
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n419" targetname: "n418" label: "0" class:1  priority:50}
+node: {title: "n418" label: "Projb Ge 418"  info1: "Proj 418
+  mode:    b
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 414
+     0:    Cmp 417
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n418" targetname: "n417" label: "0" class:1  priority:50}
+node: {title: "n417" label: "Cmp  417"  info1: "Cmp 417
+  mode:    T
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 414
+     0:    0xB 416
+     1:    Phi 453
+  Private Attributes:
+"
+}
+node: {title: "n417n416" label: "0xBIs  416"  info1: "0xB 416
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n417" targetname: "n417n416" label: "0" class:16 priority:10}
+edge: {sourcename: "n417" targetname: "n453" label: "1" class:1  priority:50}
+node: {title: "n453" label: "PhiIs  453"  info1: "Phi 453
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 414
+     0:    0x0 411
+     1:    Sub 427
+  Private Attributes:
+  backedges:
+"
+color: green}
+node: {title: "n453n411" label: "0x0Is  411"  info1: "0x0 411
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n453" targetname: "n453n411" label: "0" class:16 priority:10}
+edge: {sourcename: "n453" targetname: "n427" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n410"  label: "Block 410" status:clustered color:yellow
+edge: {sourcename: "n410" targetname: "n404" label: "0" class:13 priority:60 color:red}
+node: {title: "n413" label: "Jmp  413"  info1: "Jmp 413
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 410
+  Private Attributes:
+"
+}
+}
+
+graph: { title: "n422"  label: "Block 422" status:clustered color:yellow
+edge: {sourcename: "n422" targetname: "n421" label: "0" class:13 priority:60 color:red}
+node: {title: "n438" label: "ProjM 0 438"  info1: "Proj 438
+  mode:    M
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 422
+     0:    Store 436
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n438" targetname: "n436" label: "0" class:17 priority:10 color:blue}
+node: {title: "n436" label: "Store  436"  info1: "Store 436
+  mode:    T
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   3
+  pred nodes:
+    -1:    Block 422
+     0:    Phi 452
+     1:    Add 433
+     2:    0x13 434
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+node: {title: "n436n434" label: "0x13Is  434"  info1: "0x13 434
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n436" targetname: "n452" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n436" targetname: "n433" label: "1" class:1  priority:50}
+edge: {sourcename: "n436" targetname: "n436n434" label: "2" class:16 priority:10}
+node: {title: "n433" label: "AddP  433"  info1: "Add 433
+  mode:    P
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 422
+     0:    0x4 425
+     1:    Add 432
+  Private Attributes:
+"
+}
+node: {title: "n433n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n433" targetname: "n433n425" label: "0" class:16 priority:10}
+edge: {sourcename: "n433" targetname: "n432" label: "1" class:1  priority:50}
+node: {title: "n432" label: "AddP  432"  info1: "Add 432
+  mode:    P
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 422
+     0:    0x4 425
+     1:    Sub 431
+  Private Attributes:
+"
+}
+node: {title: "n432n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n432" targetname: "n432n425" label: "0" class:16 priority:10}
+edge: {sourcename: "n432" targetname: "n431" label: "1" class:1  priority:50}
+node: {title: "n431" label: "SubP  431"  info1: "Sub 431
+  mode:    P
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 422
+     0:    0x5 424
+     1:    Add 430
+  Private Attributes:
+"
+}
+node: {title: "n431n424" label: "0x5Is  424"  info1: "0x5 424
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n431" targetname: "n431n424" label: "0" class:16 priority:10}
+edge: {sourcename: "n431" targetname: "n430" label: "1" class:1  priority:50}
+node: {title: "n430" label: "AddP  430"  info1: "Add 430
+  mode:    P
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 422
+     0:    Mul 428
+     1:    SymC &a 412
+  Private Attributes:
+"
+}
+node: {title: "n430n412" label: "SymC &a  412"  info1: "SymC &a 412
+  mode:    P
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  kind:   addr_ent
+  entity: entity GlobalType.a (396)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n430" targetname: "n428" label: "0" class:1  priority:50}
+edge: {sourcename: "n430" targetname: "n430n412" label: "1" class:16 priority:10}
+node: {title: "n428" label: "MulIs  428"  info1: "Mul 428
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 422
+     0:    0x4 425
+     1:    Sub 427
+  Private Attributes:
+"
+}
+node: {title: "n428n425" label: "0x4Is  425"  info1: "0x4 425
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n428" targetname: "n428n425" label: "0" class:16 priority:10}
+edge: {sourcename: "n428" targetname: "n427" label: "1" class:1  priority:50}
+node: {title: "n439" label: "Jmp  439"  info1: "Jmp 439
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 422
+  Private Attributes:
+"
+}
+node: {title: "n427" label: "SubIs  427"  info1: "Sub 427
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   2
+  pred nodes:
+    -1:    Block 422
+     0:    Phi 453
+     1:    0x1 423
+  Private Attributes:
+"
+}
+node: {title: "n427n423" label: "0x1Is  423"  info1: "0x1 423
+  mode:    Is
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n427" targetname: "n453" label: "0" class:16 priority:10}
+edge: {sourcename: "n427" targetname: "n427n423" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n400"  label: "Block 400" status:clustered color:yellow
+edge: {sourcename: "n400" targetname: "n404" label: "0" class:13 priority:60 color:red}
+node: {title: "n407" label: "ProjM 1 407"  info1: "Proj 407
+  mode:    M
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 400
+     0:    Start 401
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n407" targetname: "n401" label: "0" class:17 priority:10 color:blue}
+node: {title: "n404" label: "ProjX 0 404"  info1: "Proj 404
+  mode:    X
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   1
+  pred nodes:
+    -1:    Block 400
+     0:    Start 401
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n404" targetname: "n401" label: "0" class:13 priority:60 color:red}
+node: {title: "n401" label: "Start  401"  info1: "Start 401
+  mode:    T
+  visited: 14
+  irg:     LOOP_UNROLL_EXAMPLE_m6
+  arity:   0
+  pred nodes:
+    -1:    Block 400
+  Private Attributes:
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+}
+
+}
+
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m7-loop-unrolling.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m7-loop-unrolling.vcg
new file mode 100644 (file)
index 0000000..3a1cbd3
--- /dev/null
@@ -0,0 +1,710 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m7"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+graph: { title: "g475" label: "LOOP_UNROLL_EXAMPLE_m7" status:clustered color:white
+graph: { title: "n464"  label: "Block 464" status:clustered color:yellow
+edge: {sourcename: "n464" targetname: "n514" label: "0" class:13 priority:60 color:red}
+node: {title: "n465" label: "End  465"  info1: "End 465
+  mode:    X
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 464
+     0:    Phi 518
+  Private Attributes:
+  in loop 663 with depth 0
+"
+color: blue}
+}
+
+graph: { title: "n511"  label: "Block 511" status:clustered color:yellow
+edge: {sourcename: "n511" targetname: "n487" label: "0" class:13 priority:60 color:red}
+node: {title: "n514" label: "Return  514"  info1: "Return 514
+  mode:    X
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 511
+     0:    Phi 518
+     1:    0x4 491
+  Private Attributes:
+  in loop 663 with depth 0
+  return in method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    res 0 type: int
+"
+}
+node: {title: "n514n491" label: "0x4Is  491"  info1: "0x4 491
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n514" targetname: "n518" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n514" targetname: "n514n491" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n481"  label: "Block 481" status:clustered color:yellow
+edge: {sourcename: "n481" targetname: "n480" label: "0" class:13 priority:60 color:red}
+backedge: {sourcename: "n481" targetname: "n678" label: "1" linestyle:dashed class:13 priority:60 color:red}
+node: {title: "n518" label: "PhiM  518"  info1: "Phi 518
+  mode:    M
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 481
+     0:    Proj 473
+     1:    Proj 676
+  Private Attributes:
+  backedges:
+  in loop 666 with depth 1
+"
+color: green}
+edge: {sourcename: "n518" targetname: "n473" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n518" targetname: "n676" label: "1" class:17 priority:10 color:blue}
+node: {title: "n487" label: "ProjX 0 487"  info1: "Proj 487
+  mode:    X
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 481
+     0:    Cond 486
+  Private Attributes:
+  in loop 663 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n487" targetname: "n486" label: "0" class:13 priority:60 color:red}
+node: {title: "n488" label: "ProjX 1 488"  info1: "Proj 488
+  mode:    X
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 481
+     0:    Cond 486
+  Private Attributes:
+  in loop 665 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n488" targetname: "n486" label: "0" class:13 priority:60 color:red}
+node: {title: "n486" label: "Cond  486"  info1: "Cond 486
+  mode:    T
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 481
+     0:    Proj 485
+  Private Attributes:
+  in loop 665 with depth 2
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n486" targetname: "n485" label: "0" class:1  priority:50}
+node: {title: "n485" label: "Projb Lt 485"  info1: "Proj 485
+  mode:    b
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 481
+     0:    Cmp 484
+  Private Attributes:
+  in loop 665 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n485" targetname: "n484" label: "0" class:1  priority:50}
+node: {title: "n484" label: "Cmp  484"  info1: "Cmp 484
+  mode:    T
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 481
+     0:    0x0 483
+     1:    Phi 519
+  Private Attributes:
+  in loop 665 with depth 2
+"
+}
+node: {title: "n484n483" label: "0x0Is  483"  info1: "0x0 483
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n484" targetname: "n484n483" label: "0" class:16 priority:10}
+edge: {sourcename: "n484" targetname: "n519" label: "1" class:1  priority:50}
+node: {title: "n519" label: "PhiIs  519"  info1: "Phi 519
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 481
+     0:    0xA 478
+     1:    Sub 677
+  Private Attributes:
+  backedges:
+  in loop 664 with depth 1
+"
+color: green}
+node: {title: "n519n478" label: "0xAIs  478"  info1: "0xA 478
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n519" targetname: "n519n478" label: "0" class:16 priority:10}
+edge: {sourcename: "n519" targetname: "n677" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n476"  label: "Block 476" status:clustered color:yellow
+edge: {sourcename: "n476" targetname: "n470" label: "0" class:13 priority:60 color:red}
+node: {title: "n480" label: "Jmp  480"  info1: "Jmp 480
+  mode:    X
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 476
+  Private Attributes:
+  in loop 663 with depth 0
+"
+}
+}
+
+graph: { title: "n669"  label: "Block 669" status:clustered color:yellow
+edge: {sourcename: "n669" targetname: "n505" label: "0" class:13 priority:60 color:red}
+node: {title: "n676" label: "ProjM 0 676"  info1: "Proj 676
+  mode:    M
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 669
+     0:    Store 675
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n676" targetname: "n675" label: "0" class:17 priority:10 color:blue}
+node: {title: "n675" label: "Store  675"  info1: "Store 675
+  mode:    T
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   3
+  pred nodes:
+    -1:    Block 669
+     0:    Proj 503
+     1:    Add 673
+     2:    Add 674
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n675" targetname: "n503" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n675" targetname: "n673" label: "1" class:1  priority:50}
+edge: {sourcename: "n675" targetname: "n674" label: "2" class:1  priority:50}
+node: {title: "n673" label: "AddP  673"  info1: "Add 673
+  mode:    P
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 669
+     0:    Mul 672
+     1:    SymC &a 479
+  Private Attributes:
+"
+}
+node: {title: "n673n479" label: "SymC &a  479"  info1: "SymC &a 479
+  mode:    P
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (462)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n673" targetname: "n672" label: "0" class:1  priority:50}
+edge: {sourcename: "n673" targetname: "n673n479" label: "1" class:16 priority:10}
+node: {title: "n672" label: "MulIs  672"  info1: "Mul 672
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 669
+     0:    0x4 491
+     1:    Add 671
+  Private Attributes:
+"
+}
+node: {title: "n672n491" label: "0x4Is  491"  info1: "0x4 491
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n672" targetname: "n672n491" label: "0" class:16 priority:10}
+edge: {sourcename: "n672" targetname: "n671" label: "1" class:1  priority:50}
+node: {title: "n671" label: "AddIs  671"  info1: "Add 671
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 669
+     0:    0x13 492
+     1:    Add 670
+  Private Attributes:
+"
+}
+node: {title: "n671n492" label: "0x13Is  492"  info1: "0x13 492
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n671" targetname: "n671n492" label: "0" class:16 priority:10}
+edge: {sourcename: "n671" targetname: "n670" label: "1" class:1  priority:50}
+node: {title: "n670" label: "AddIs  670"  info1: "Add 670
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 669
+     0:    0x4 491
+     1:    Sub 504
+  Private Attributes:
+"
+}
+node: {title: "n670n491" label: "0x4Is  491"  info1: "0x4 491
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n670" targetname: "n670n491" label: "0" class:16 priority:10}
+edge: {sourcename: "n670" targetname: "n504" label: "1" class:16 priority:10}
+node: {title: "n674" label: "AddIs  674"  info1: "Add 674
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 669
+     0:    0x13 492
+     1:    Sub 504
+  Private Attributes:
+"
+}
+node: {title: "n674n492" label: "0x13Is  492"  info1: "0x13 492
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n674" targetname: "n674n492" label: "0" class:16 priority:10}
+edge: {sourcename: "n674" targetname: "n504" label: "1" class:16 priority:10}
+node: {title: "n678" label: "Jmp  678"  info1: "Jmp 678
+  mode:    X
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 669
+  Private Attributes:
+"
+}
+node: {title: "n677" label: "SubIs  677"  info1: "Sub 677
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 669
+     0:    Sub 504
+     1:    0x1 490
+  Private Attributes:
+"
+}
+node: {title: "n677n490" label: "0x1Is  490"  info1: "0x1 490
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n677" targetname: "n504" label: "0" class:16 priority:10}
+edge: {sourcename: "n677" targetname: "n677n490" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n489"  label: "Block 489" status:clustered color:yellow
+edge: {sourcename: "n489" targetname: "n488" label: "0" class:13 priority:60 color:red}
+node: {title: "n503" label: "ProjM 0 503"  info1: "Proj 503
+  mode:    M
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 489
+     0:    Store 501
+  Private Attributes:
+  in loop 666 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n503" targetname: "n501" label: "0" class:17 priority:10 color:blue}
+node: {title: "n501" label: "Store  501"  info1: "Store 501
+  mode:    T
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   3
+  pred nodes:
+    -1:    Block 489
+     0:    Phi 518
+     1:    Add 498
+     2:    Add 499
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 666 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n501" targetname: "n518" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n501" targetname: "n498" label: "1" class:1  priority:50}
+edge: {sourcename: "n501" targetname: "n499" label: "2" class:1  priority:50}
+node: {title: "n498" label: "AddP  498"  info1: "Add 498
+  mode:    P
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 489
+     0:    Mul 496
+     1:    SymC &a 479
+  Private Attributes:
+  in loop 663 with depth 0
+"
+}
+node: {title: "n498n479" label: "SymC &a  479"  info1: "SymC &a 479
+  mode:    P
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (462)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n498" targetname: "n496" label: "0" class:1  priority:50}
+edge: {sourcename: "n498" targetname: "n498n479" label: "1" class:16 priority:10}
+node: {title: "n496" label: "MulIs  496"  info1: "Mul 496
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 489
+     0:    0x4 491
+     1:    Add 495
+  Private Attributes:
+  in loop 663 with depth 0
+"
+}
+node: {title: "n496n491" label: "0x4Is  491"  info1: "0x4 491
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n496" targetname: "n496n491" label: "0" class:16 priority:10}
+edge: {sourcename: "n496" targetname: "n495" label: "1" class:1  priority:50}
+node: {title: "n495" label: "AddIs  495"  info1: "Add 495
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 489
+     0:    0x13 492
+     1:    Add 494
+  Private Attributes:
+  in loop 663 with depth 0
+"
+}
+node: {title: "n495n492" label: "0x13Is  492"  info1: "0x13 492
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n495" targetname: "n495n492" label: "0" class:16 priority:10}
+edge: {sourcename: "n495" targetname: "n494" label: "1" class:1  priority:50}
+node: {title: "n494" label: "AddIs  494"  info1: "Add 494
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 489
+     0:    0x4 491
+     1:    Phi 519
+  Private Attributes:
+  in loop 663 with depth 0
+"
+}
+node: {title: "n494n491" label: "0x4Is  491"  info1: "0x4 491
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n494" targetname: "n494n491" label: "0" class:16 priority:10}
+edge: {sourcename: "n494" targetname: "n519" label: "1" class:16 priority:10}
+node: {title: "n499" label: "AddIs  499"  info1: "Add 499
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 489
+     0:    0x13 492
+     1:    Phi 519
+  Private Attributes:
+  in loop 663 with depth 0
+"
+}
+node: {title: "n499n492" label: "0x13Is  492"  info1: "0x13 492
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n499" targetname: "n499n492" label: "0" class:16 priority:10}
+edge: {sourcename: "n499" targetname: "n519" label: "1" class:16 priority:10}
+node: {title: "n505" label: "Jmp  505"  info1: "Jmp 505
+  mode:    X
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 489
+  Private Attributes:
+  in loop 665 with depth 2
+"
+}
+node: {title: "n504" label: "SubIs  504"  info1: "Sub 504
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 489
+     0:    Phi 519
+     1:    0x1 490
+  Private Attributes:
+  in loop 664 with depth 1
+"
+}
+node: {title: "n504n490" label: "0x1Is  490"  info1: "0x1 490
+  mode:    Is
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n504" targetname: "n519" label: "0" class:16 priority:10}
+edge: {sourcename: "n504" targetname: "n504n490" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n466"  label: "Block 466" status:clustered color:yellow
+edge: {sourcename: "n466" targetname: "n470" label: "0" class:13 priority:60 color:red}
+node: {title: "n473" label: "ProjM 1 473"  info1: "Proj 473
+  mode:    M
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 466
+     0:    Start 467
+  Private Attributes:
+  in loop 663 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n473" targetname: "n467" label: "0" class:17 priority:10 color:blue}
+node: {title: "n470" label: "ProjX 0 470"  info1: "Proj 470
+  mode:    X
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 466
+     0:    Start 467
+  Private Attributes:
+  in loop 663 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n470" targetname: "n467" label: "0" class:13 priority:60 color:red}
+node: {title: "n467" label: "Start  467"  info1: "Start 467
+  mode:    T
+  visited: 28
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+}
+
+}
+
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m7-looptree.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m7-looptree.vcg
new file mode 100644 (file)
index 0000000..418ade7
--- /dev/null
@@ -0,0 +1,69 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m7"
+display_edge_labels: yes
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: top_to_bottom
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+node: {title: "l667" label: "loop 0, 1 sons, 4 nodes"  info1: " loop nr: 667
+ The loop was analyzed 0 times."}
+node: { title: "l667-0-nodes" color: lightyellow label: "Block  466
+Block  476" }
+edge: {sourcename: "l667" targetname: "l667-0-nodes" label:"0...1"}
+edge: {sourcename: "l667" targetname: "l668" color: darkgreen label: "2"}
+node: {title: "l668" label: "loop 1, 0 sons, 2 nodes"  info1: " loop nr: 668
+ The loop was analyzed 0 times."}
+node: { title: "l668-0-nodes" color: lightyellow label: "Block  481     loop head!
+Block  489" }
+edge: {sourcename: "l668" targetname: "l668-0-nodes" label:"0...1"}
+node: { title: "l667-3-nodes" color: lightyellow label: "Block  511
+Block  464" }
+edge: {sourcename: "l667" targetname: "l667-3-nodes" label:"3...4"}
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m7-pure.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m7-pure.vcg
new file mode 100644 (file)
index 0000000..e360576
--- /dev/null
@@ -0,0 +1,593 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m7"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+node: {title: "n467" label: "Start  467"  info1: "Start 467
+  mode:    T
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+edge: { sourcename: "n467" targetname: "n466" class:2  priority:50 linestyle:dotted}
+node: {title: "n470" label: "ProjX 0 470"  info1: "Proj 470
+  mode:    X
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 466
+     0:    Start 467
+  Private Attributes:
+  in loop 663 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n470" targetname: "n467" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n470" targetname: "n466" class:2  priority:50 linestyle:dotted}
+node: {title: "n466" label: "Block  466"  info1: "Block 466
+  mode:    BB
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+     0:    Proj 470
+  Private Attributes:
+  backedges:
+  in loop 663 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n466" targetname: "n470" label: "0" class:13 priority:60 color:red}
+node: {title: "n504" label: "SubIs  504"  info1: "Sub 504
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 489
+     0:    Phi 519
+     1:    0x1 490
+  Private Attributes:
+  in loop 664 with depth 1
+"
+}
+node: {title: "n504n490" label: "0x1Is  490"  info1: "0x1 490
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n504" targetname: "n519" label: "0" class:16 priority:10}
+edge: {sourcename: "n504" targetname: "n504n490" label: "1" class:16 priority:10}
+edge: { sourcename: "n504" targetname: "n489" class:2  priority:50 linestyle:dotted}
+node: {title: "n519" label: "PhiIs  519"  info1: "Phi 519
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 481
+     0:    0xA 478
+     1: be Sub 504
+  Private Attributes:
+  backedges:  1
+  in loop 664 with depth 1
+"
+color: green}
+node: {title: "n519n478" label: "0xAIs  478"  info1: "0xA 478
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n519" targetname: "n519n478" label: "0" class:16 priority:10}
+backedge: {sourcename: "n519" targetname: "n504" label: "1" linestyle:dashed class:16 priority:10}
+edge: { sourcename: "n519" targetname: "n481" class:2  priority:50 linestyle:dotted}
+node: {title: "n484" label: "Cmp  484"  info1: "Cmp 484
+  mode:    T
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 481
+     0:    0x0 483
+     1:    Phi 519
+  Private Attributes:
+  in loop 665 with depth 2
+"
+}
+node: {title: "n484n483" label: "0x0Is  483"  info1: "0x0 483
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n484" targetname: "n484n483" label: "0" class:16 priority:10}
+edge: {sourcename: "n484" targetname: "n519" label: "1" class:1  priority:50}
+edge: { sourcename: "n484" targetname: "n481" class:2  priority:50 linestyle:dotted}
+node: {title: "n485" label: "Projb Lt 485"  info1: "Proj 485
+  mode:    b
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 481
+     0:    Cmp 484
+  Private Attributes:
+  in loop 665 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n485" targetname: "n484" label: "0" class:1  priority:50}
+edge: { sourcename: "n485" targetname: "n481" class:2  priority:50 linestyle:dotted}
+node: {title: "n486" label: "Cond  486"  info1: "Cond 486
+  mode:    T
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 481
+     0:    Proj 485
+  Private Attributes:
+  in loop 665 with depth 2
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n486" targetname: "n485" label: "0" class:1  priority:50}
+edge: { sourcename: "n486" targetname: "n481" class:2  priority:50 linestyle:dotted}
+node: {title: "n488" label: "ProjX 1 488"  info1: "Proj 488
+  mode:    X
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 481
+     0:    Cond 486
+  Private Attributes:
+  in loop 665 with depth 2
+"
+color: yellow}
+edge: {sourcename: "n488" targetname: "n486" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n488" targetname: "n481" class:2  priority:50 linestyle:dotted}
+node: {title: "n489" label: "Block  489"  info1: "Block 489
+  mode:    BB
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+     0:    Proj 488
+  Private Attributes:
+  backedges:
+  in loop 665 with depth 2
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n489" targetname: "n488" label: "0" class:13 priority:60 color:red}
+node: {title: "n505" label: "Jmp  505"  info1: "Jmp 505
+  mode:    X
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 489
+  Private Attributes:
+  in loop 665 with depth 2
+"
+}
+edge: { sourcename: "n505" targetname: "n489" class:2  priority:50 linestyle:dotted}
+node: {title: "n476" label: "Block  476"  info1: "Block 476
+  mode:    BB
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+     0:    Proj 470
+  Private Attributes:
+  backedges:
+  in loop 663 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n476" targetname: "n470" label: "0" class:13 priority:60 color:red}
+node: {title: "n480" label: "Jmp  480"  info1: "Jmp 480
+  mode:    X
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 476
+  Private Attributes:
+  in loop 663 with depth 0
+"
+}
+edge: { sourcename: "n480" targetname: "n476" class:2  priority:50 linestyle:dotted}
+node: {title: "n481" label: "Block  481"  info1: "Block 481
+  mode:    BB
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+     0:    Jmp 480
+     1: be Jmp 505
+  Private Attributes:
+  backedges:  1
+  in loop 665 with depth 2
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n481" targetname: "n480" label: "0" class:13 priority:60 color:red}
+backedge: {sourcename: "n481" targetname: "n505" label: "1" linestyle:dashed class:13 priority:60 color:red}
+node: {title: "n487" label: "ProjX 0 487"  info1: "Proj 487
+  mode:    X
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 481
+     0:    Cond 486
+  Private Attributes:
+  in loop 663 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n487" targetname: "n486" label: "0" class:13 priority:60 color:red}
+edge: { sourcename: "n487" targetname: "n481" class:2  priority:50 linestyle:dotted}
+node: {title: "n511" label: "Block  511"  info1: "Block 511
+  mode:    BB
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+     0:    Proj 487
+  Private Attributes:
+  backedges:
+  in loop 663 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n511" targetname: "n487" label: "0" class:13 priority:60 color:red}
+node: {title: "n499" label: "AddIs  499"  info1: "Add 499
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 489
+     0:    0x13 492
+     1:    Phi 519
+  Private Attributes:
+  in loop 663 with depth 0
+"
+}
+node: {title: "n499n492" label: "0x13Is  492"  info1: "0x13 492
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n499" targetname: "n499n492" label: "0" class:16 priority:10}
+edge: {sourcename: "n499" targetname: "n519" label: "1" class:16 priority:10}
+edge: { sourcename: "n499" targetname: "n489" class:2  priority:50 linestyle:dotted}
+node: {title: "n494" label: "AddIs  494"  info1: "Add 494
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 489
+     0:    0x4 491
+     1:    Phi 519
+  Private Attributes:
+  in loop 663 with depth 0
+"
+}
+node: {title: "n494n491" label: "0x4Is  491"  info1: "0x4 491
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n494" targetname: "n494n491" label: "0" class:16 priority:10}
+edge: {sourcename: "n494" targetname: "n519" label: "1" class:16 priority:10}
+edge: { sourcename: "n494" targetname: "n489" class:2  priority:50 linestyle:dotted}
+node: {title: "n495" label: "AddIs  495"  info1: "Add 495
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 489
+     0:    0x13 492
+     1:    Add 494
+  Private Attributes:
+  in loop 663 with depth 0
+"
+}
+node: {title: "n495n492" label: "0x13Is  492"  info1: "0x13 492
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n495" targetname: "n495n492" label: "0" class:16 priority:10}
+edge: {sourcename: "n495" targetname: "n494" label: "1" class:1  priority:50}
+edge: { sourcename: "n495" targetname: "n489" class:2  priority:50 linestyle:dotted}
+node: {title: "n496" label: "MulIs  496"  info1: "Mul 496
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 489
+     0:    0x4 491
+     1:    Add 495
+  Private Attributes:
+  in loop 663 with depth 0
+"
+}
+node: {title: "n496n491" label: "0x4Is  491"  info1: "0x4 491
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n496" targetname: "n496n491" label: "0" class:16 priority:10}
+edge: {sourcename: "n496" targetname: "n495" label: "1" class:1  priority:50}
+edge: { sourcename: "n496" targetname: "n489" class:2  priority:50 linestyle:dotted}
+node: {title: "n498" label: "AddP  498"  info1: "Add 498
+  mode:    P
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 489
+     0:    Mul 496
+     1:    SymC &a 479
+  Private Attributes:
+  in loop 663 with depth 0
+"
+}
+node: {title: "n498n479" label: "SymC &a  479"  info1: "SymC &a 479
+  mode:    P
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  kind:   addr_ent
+  entity: entity GlobalType.a (462)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n498" targetname: "n496" label: "0" class:1  priority:50}
+edge: {sourcename: "n498" targetname: "n498n479" label: "1" class:16 priority:10}
+edge: { sourcename: "n498" targetname: "n489" class:2  priority:50 linestyle:dotted}
+node: {title: "n501" label: "Store  501"  info1: "Store 501
+  mode:    T
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   3
+  pred nodes:
+    -1:    Block 489
+     0:    Phi 518
+     1:    Add 498
+     2:    Add 499
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  in loop 666 with depth 1
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n501" targetname: "n518" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n501" targetname: "n498" label: "1" class:1  priority:50}
+edge: {sourcename: "n501" targetname: "n499" label: "2" class:1  priority:50}
+edge: { sourcename: "n501" targetname: "n489" class:2  priority:50 linestyle:dotted}
+node: {title: "n503" label: "ProjM 0 503"  info1: "Proj 503
+  mode:    M
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 489
+     0:    Store 501
+  Private Attributes:
+  in loop 666 with depth 1
+"
+color: yellow}
+edge: {sourcename: "n503" targetname: "n501" label: "0" class:17 priority:10 color:blue}
+edge: { sourcename: "n503" targetname: "n489" class:2  priority:50 linestyle:dotted}
+node: {title: "n473" label: "ProjM 1 473"  info1: "Proj 473
+  mode:    M
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 466
+     0:    Start 467
+  Private Attributes:
+  in loop 663 with depth 0
+"
+color: yellow}
+edge: {sourcename: "n473" targetname: "n467" label: "0" class:17 priority:10 color:blue}
+edge: { sourcename: "n473" targetname: "n466" class:2  priority:50 linestyle:dotted}
+node: {title: "n518" label: "PhiM  518"  info1: "Phi 518
+  mode:    M
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 481
+     0:    Proj 473
+     1: be Proj 503
+  Private Attributes:
+  backedges:  1
+  in loop 666 with depth 1
+"
+color: green}
+edge: {sourcename: "n518" targetname: "n473" label: "0" class:17 priority:10 color:blue}
+backedge: {sourcename: "n518" targetname: "n503" label: "1" linestyle:dashed class:17 priority:10 color:blue}
+edge: { sourcename: "n518" targetname: "n481" class:2  priority:50 linestyle:dotted}
+node: {title: "n514" label: "Return  514"  info1: "Return 514
+  mode:    X
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 511
+     0:    Phi 518
+     1:    0x4 491
+  Private Attributes:
+  in loop 663 with depth 0
+  return in method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    res 0 type: int
+"
+}
+node: {title: "n514n491" label: "0x4Is  491"  info1: "0x4 491
+  mode:    Is
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  in loop 663 with depth 0
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n514" targetname: "n518" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n514" targetname: "n514n491" label: "1" class:16 priority:10}
+edge: { sourcename: "n514" targetname: "n511" class:2  priority:50 linestyle:dotted}
+node: {title: "n464" label: "Block  464"  info1: "Block 464
+  mode:    BB
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+     0:    Return 514
+  Private Attributes:
+  backedges:
+  in loop 663 with depth 0
+  block visited: 0
+  dominator info: output not implemented
+"
+color: lightyellow}
+edge: {sourcename: "n464" targetname: "n514" label: "0" class:13 priority:60 color:red}
+node: {title: "n465" label: "End  465"  info1: "End 465
+  mode:    X
+  visited: 18
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 464
+     0:    Phi 518
+  Private Attributes:
+  in loop 663 with depth 0
+"
+color: blue}
+edge: { sourcename: "n465" targetname: "n464" class:2  priority:50 linestyle:dotted}
+}
diff --git a/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m7.vcg b/testprograms/ref-results/LOOP_UNROLL_EXAMPLE_m7.vcg
new file mode 100644 (file)
index 0000000..f8b2a8a
--- /dev/null
@@ -0,0 +1,476 @@
+graph: { title: "ir graph of LOOP_UNROLL_EXAMPLE_m7"
+display_edge_labels: no
+layoutalgorithm: mindepth
+manhattan_edges: yes
+port_sharing: no
+orientation: bottom_to_top
+classname 1:  "intrablock Data"
+classname 16: "interblock Data"
+classname 2:  "Block"
+classname 13: "Control Flow"
+classname 18: "Exception Control Flow for Interval Analysis"
+classname 14: "intrablock Memory"
+classname 17: "interblock Memory"
+classname 15: "Dominators"
+classname 3:  "Entity type"
+classname 4:  "Entity owner"
+classname 5:  "Method Param"
+classname 6:  "Method Res"
+classname 7:  "Super"
+classname 8:  "Union"
+classname 9:  "Points-to"
+classname 10: "Array Element Type"
+classname 11: "Overwrites"
+classname 12: "Member"
+infoname 1: "Attribute"
+infoname 2: "Verification errors"
+colorentry 100:    0   0    0
+colorentry 101:   20   0    0
+colorentry 102:   40   0    0
+colorentry 103:   60   0    0
+colorentry 104:   80   0    0
+colorentry 105:  100   0    0
+colorentry 106:  120   0    0
+colorentry 107:  140   0    0
+colorentry 108:  150   0    0
+colorentry 109:  180   0    0
+colorentry 110:  200   0    0
+colorentry 111:  220   0    0
+colorentry 112:  240   0    0
+colorentry 113:  255   0    0
+colorentry 113:  255  20   20
+colorentry 114:  255  40   40
+colorentry 115:  255  60   60
+colorentry 116:  255  80   80
+colorentry 117:  255 100  100
+colorentry 118:  255 120  120
+colorentry 119:  255 140  140
+colorentry 120:  255 150  150
+colorentry 121:  255 180  180
+colorentry 122:  255 200  200
+colorentry 123:  255 220  220
+colorentry 124:  255 240  240
+colorentry 125:  255 250  250
+
+graph: { title: "g475" label: "LOOP_UNROLL_EXAMPLE_m7" status:clustered color:white
+graph: { title: "n464"  label: "Block 464" status:clustered color:yellow
+edge: {sourcename: "n464" targetname: "n514" label: "0" class:13 priority:60 color:red}
+node: {title: "n465" label: "End  465"  info1: "End 465
+  mode:    X
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 464
+     0:    Phi 518
+  Private Attributes:
+"
+color: blue}
+}
+
+graph: { title: "n511"  label: "Block 511" status:clustered color:yellow
+edge: {sourcename: "n511" targetname: "n487" label: "0" class:13 priority:60 color:red}
+node: {title: "n514" label: "Return  514"  info1: "Return 514
+  mode:    X
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 511
+     0:    Phi 518
+     1:    0x4 491
+  Private Attributes:
+  return in method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    res 0 type: int
+"
+}
+node: {title: "n514n491" label: "0x4Is  491"  info1: "0x4 491
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n514" targetname: "n518" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n514" targetname: "n514n491" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n481"  label: "Block 481" status:clustered color:yellow
+edge: {sourcename: "n481" targetname: "n480" label: "0" class:13 priority:60 color:red}
+edge: {sourcename: "n481" targetname: "n505" label: "1" class:13 priority:60 color:red}
+node: {title: "n518" label: "PhiM  518"  info1: "Phi 518
+  mode:    M
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 481
+     0:    Proj 473
+     1:    Proj 503
+  Private Attributes:
+  backedges:
+"
+color: green}
+edge: {sourcename: "n518" targetname: "n473" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n518" targetname: "n503" label: "1" class:17 priority:10 color:blue}
+node: {title: "n487" label: "ProjX 0 487"  info1: "Proj 487
+  mode:    X
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 481
+     0:    Cond 486
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n487" targetname: "n486" label: "0" class:13 priority:60 color:red}
+node: {title: "n488" label: "ProjX 1 488"  info1: "Proj 488
+  mode:    X
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 481
+     0:    Cond 486
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n488" targetname: "n486" label: "0" class:13 priority:60 color:red}
+node: {title: "n486" label: "Cond  486"  info1: "Cond 486
+  mode:    T
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 481
+     0:    Proj 485
+  Private Attributes:
+  condition kind: dense
+  default ProjNr: 0
+"
+}
+edge: {sourcename: "n486" targetname: "n485" label: "0" class:1  priority:50}
+node: {title: "n485" label: "Projb Lt 485"  info1: "Proj 485
+  mode:    b
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 481
+     0:    Cmp 484
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n485" targetname: "n484" label: "0" class:1  priority:50}
+node: {title: "n484" label: "Cmp  484"  info1: "Cmp 484
+  mode:    T
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 481
+     0:    0x0 483
+     1:    Phi 519
+  Private Attributes:
+"
+}
+node: {title: "n484n483" label: "0x0Is  483"  info1: "0x0 483
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n484" targetname: "n484n483" label: "0" class:16 priority:10}
+edge: {sourcename: "n484" targetname: "n519" label: "1" class:1  priority:50}
+node: {title: "n519" label: "PhiIs  519"  info1: "Phi 519
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 481
+     0:    0xA 478
+     1:    Sub 504
+  Private Attributes:
+  backedges:
+"
+color: green}
+node: {title: "n519n478" label: "0xAIs  478"  info1: "0xA 478
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n519" targetname: "n519n478" label: "0" class:16 priority:10}
+edge: {sourcename: "n519" targetname: "n504" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n476"  label: "Block 476" status:clustered color:yellow
+edge: {sourcename: "n476" targetname: "n470" label: "0" class:13 priority:60 color:red}
+node: {title: "n480" label: "Jmp  480"  info1: "Jmp 480
+  mode:    X
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 476
+  Private Attributes:
+"
+}
+}
+
+graph: { title: "n489"  label: "Block 489" status:clustered color:yellow
+edge: {sourcename: "n489" targetname: "n488" label: "0" class:13 priority:60 color:red}
+node: {title: "n503" label: "ProjM 0 503"  info1: "Proj 503
+  mode:    M
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 489
+     0:    Store 501
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n503" targetname: "n501" label: "0" class:17 priority:10 color:blue}
+node: {title: "n501" label: "Store  501"  info1: "Store 501
+  mode:    T
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   3
+  pred nodes:
+    -1:    Block 489
+     0:    Phi 518
+     1:    Add 498
+     2:    Add 499
+  Private Attributes:
+  pinned state: op_pin_state_pinned
+  volatility: volatility_non_volatile
+"
+}
+edge: {sourcename: "n501" targetname: "n518" label: "0" class:17 priority:10 color:blue}
+edge: {sourcename: "n501" targetname: "n498" label: "1" class:1  priority:50}
+edge: {sourcename: "n501" targetname: "n499" label: "2" class:1  priority:50}
+node: {title: "n498" label: "AddP  498"  info1: "Add 498
+  mode:    P
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 489
+     0:    Mul 496
+     1:    SymC &a 479
+  Private Attributes:
+"
+}
+node: {title: "n498n479" label: "SymC &a  479"  info1: "SymC &a 479
+  mode:    P
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  kind:   addr_ent
+  entity: entity GlobalType.a (462)
+
+  type of value: type_unknown
+"
+}
+edge: {sourcename: "n498" targetname: "n496" label: "0" class:1  priority:50}
+edge: {sourcename: "n498" targetname: "n498n479" label: "1" class:16 priority:10}
+node: {title: "n496" label: "MulIs  496"  info1: "Mul 496
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 489
+     0:    0x4 491
+     1:    Add 495
+  Private Attributes:
+"
+}
+node: {title: "n496n491" label: "0x4Is  491"  info1: "0x4 491
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n496" targetname: "n496n491" label: "0" class:16 priority:10}
+edge: {sourcename: "n496" targetname: "n495" label: "1" class:1  priority:50}
+node: {title: "n495" label: "AddIs  495"  info1: "Add 495
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 489
+     0:    0x13 492
+     1:    Add 494
+  Private Attributes:
+"
+}
+node: {title: "n495n492" label: "0x13Is  492"  info1: "0x13 492
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n495" targetname: "n495n492" label: "0" class:16 priority:10}
+edge: {sourcename: "n495" targetname: "n494" label: "1" class:1  priority:50}
+node: {title: "n494" label: "AddIs  494"  info1: "Add 494
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 489
+     0:    0x4 491
+     1:    Phi 519
+  Private Attributes:
+"
+}
+node: {title: "n494n491" label: "0x4Is  491"  info1: "0x4 491
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n494" targetname: "n494n491" label: "0" class:16 priority:10}
+edge: {sourcename: "n494" targetname: "n519" label: "1" class:16 priority:10}
+node: {title: "n499" label: "AddIs  499"  info1: "Add 499
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 489
+     0:    0x13 492
+     1:    Phi 519
+  Private Attributes:
+"
+}
+node: {title: "n499n492" label: "0x13Is  492"  info1: "0x13 492
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n499" targetname: "n499n492" label: "0" class:16 priority:10}
+edge: {sourcename: "n499" targetname: "n519" label: "1" class:16 priority:10}
+node: {title: "n505" label: "Jmp  505"  info1: "Jmp 505
+  mode:    X
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 489
+  Private Attributes:
+"
+}
+node: {title: "n504" label: "SubIs  504"  info1: "Sub 504
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   2
+  pred nodes:
+    -1:    Block 489
+     0:    Phi 519
+     1:    0x1 490
+  Private Attributes:
+"
+}
+node: {title: "n504n490" label: "0x1Is  490"  info1: "0x1 490
+  mode:    Is
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  Const of type type_unknown
+"
+color: yellow}
+edge: {sourcename: "n504" targetname: "n519" label: "0" class:16 priority:10}
+edge: {sourcename: "n504" targetname: "n504n490" label: "1" class:16 priority:10}
+}
+
+graph: { title: "n466"  label: "Block 466" status:clustered color:yellow
+edge: {sourcename: "n466" targetname: "n470" label: "0" class:13 priority:60 color:red}
+node: {title: "n473" label: "ProjM 1 473"  info1: "Proj 473
+  mode:    M
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 466
+     0:    Start 467
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n473" targetname: "n467" label: "0" class:17 priority:10 color:blue}
+node: {title: "n470" label: "ProjX 0 470"  info1: "Proj 470
+  mode:    X
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   1
+  pred nodes:
+    -1:    Block 466
+     0:    Start 467
+  Private Attributes:
+"
+color: yellow}
+edge: {sourcename: "n470" targetname: "n467" label: "0" class:13 priority:60 color:red}
+node: {title: "n467" label: "Start  467"  info1: "Start 467
+  mode:    T
+  visited: 15
+  irg:     LOOP_UNROLL_EXAMPLE_m7
+  arity:   0
+  pred nodes:
+    -1:    Block 466
+  Private Attributes:
+  start of method of type LOOP_UNROLL_EXAMPLE_meth_tp
+    param 0 type: int
+"
+color: blue}
+}
+
+}
+
+}
index e791c32..a1e894d 100644 (file)
@@ -165,6 +165,44 @@ Use xvcg to view these graphs:
 Creating an IR graph: IF_EXAMPLE...
 Done building the graph.  Dumping and optimizing it.
 
+Creating an IR graph: IF_EXAMPLE...
+Done building the graph.  Dumping and optimizing it.
+
+init 0,
+ iter_end 10,
+ diff 10, cmp_typ
+ 4,
+ unroll_factor 2
+init 0,
+ iter_end 11,
+ diff 11, cmp_typ
+ 5,
+ unroll_factor 2
+init 0,
+ iter_end 10,
+ diff 10, cmp_typ
+ 2,
+ unroll_factor 2
+init 0,
+ iter_end 11,
+ diff 11, cmp_typ
+ 5,
+ unroll_factor 4
+init 0,
+ iter_end 10,
+ diff 10, cmp_typ
+ 2,
+ unroll_factor 2
+init 0,
+ iter_end 11,
+ diff 11, cmp_typ
+ 5,
+ unroll_factor 4
+init 0,
+ iter_end 10,
+ diff 10, cmp_typ
+ 2,
+ unroll_factor 2
 Creating an IR graph: THREE_CFPRED_EXAMPLE ...
 Optimizing ...
 Dumping the graph and a control flow graph.
index 9246f89..59726dd 100644 (file)
@@ -152,7 +152,6 @@ static void function_begin(type *owner, type *mtp, char *fct_name, loop_dir_t lo
 }
 
 int x;
-static int y;
 
 /**
  * finishes a builded function.