[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing tests/syntax/unroll_labels.i (no preprocessing)
[value] Analyzing a complete application starting at main
[value] Computing initial state
[value] Initial state computed
[value] Values of globals at initialization
  foo ∈ [--..--]
tests/syntax/unroll_labels.i:53:[kernel] warning: Non-natural loop detected.
tests/syntax/unroll_labels.i:25:[value] entering loop for the first time
tests/syntax/unroll_labels.i:39:[value] entering loop for the first time
tests/syntax/unroll_labels.i:33:[value] entering loop for the first time
tests/syntax/unroll_labels.i:53:[value] entering loop for the first time
[value] Recording results for main
[value] done for function main
[value] ====== VALUES COMPUTED ======
[value] Values at end of function main:
  j ∈ {-1; 5}
/* Generated by Frama-C */
enum __anonenum_1 {
    SIX = 6
};
int volatile foo;
void main(void)
{
  int j;
  j = 0;
  {
    int i;
    i = 1;
    if (! (i < 4)) goto unrolling_2_loop;
    switch (i) {
      case 1: j ++;
      break;
      case 2: j += 3;
      break;
      case 3: j += 5;
      break;
      case 4: j += 7;
      break;
      default: ;
      j = 0;
    }
    i ++;
    unrolling_6_loop: ;
    if (! (i < 4)) goto unrolling_2_loop;
    switch (i) {
      case 1: j ++;
      break;
      case 2: j += 3;
      break;
      case 3: j += 5;
      break;
      case 4: j += 7;
      break;
      default: ;
      j = 0;
    }
    i ++;
    unrolling_5_loop: ;
    if (! (i < 4)) goto unrolling_2_loop;
    switch (i) {
      case 1: j ++;
      break;
      case 2: j += 3;
      break;
      case 3: j += 5;
      break;
      case 4: j += 7;
      break;
      default: ;
      j = 0;
    }
    i ++;
    unrolling_4_loop: ;
    if (! (i < 4)) goto unrolling_2_loop;
    switch (i) {
      case 1: j ++;
      break;
      case 2: j += 3;
      break;
      case 3: j += 5;
      break;
      case 4: j += 7;
      break;
      default: ;
      j = 0;
    }
    i ++;
    unrolling_3_loop: ;
    /*@ loop invariant \false;
        loop pragma UNROLL "completely", 4;
        loop pragma UNROLL "done", 4;
    */
    while (i < 4) {
      switch (i) {
        case 1: j ++;
        break;
        case 2: j += 3;
        break;
        case 3: j += 5;
        break;
        case 4: j += 7;
        break;
        default: ;
        j = 0;
      }
      i ++;
    }
    unrolling_2_loop: ;
  }
  {
    int x;
    x = 0;
    L:
      if (! (x < 5)) goto unrolling_8_loop;
      {
        int y_unroll_32;
        y_unroll_32 = 0;
        x ++;
        y_unroll_32 ++;
      }
      unrolling_11_loop: ;
      if (! (x < 5)) goto unrolling_8_loop;
      {
        int y_unroll_28;
        y_unroll_28 = 0;
        x ++;
        y_unroll_28 ++;
      }
      unrolling_10_loop: ;
      if (! (x < 5)) goto unrolling_8_loop;
      {
        int y_unroll_24;
        y_unroll_24 = 0;
        x ++;
        y_unroll_24 ++;
      }
      unrolling_9_loop: ;
      /*@ loop pragma UNROLL 3;
          loop pragma UNROLL "done", 3; */
      while (x < 5) {
        int y;
        y = 0;
        x ++;
        y ++;
      }
      unrolling_8_loop: ;
  }
  j = 0;
  if (! foo) goto unrolling_18_loop;
  switch (j) {
    case -1: j ++;
    break;
    case 0:
      if (! (j < 5)) goto unrolling_13_loop_unrolling_48_loop;
      j ++;
      unrolling_16_loop_unrolling_45_loop: ;
      if (! (j < 5)) goto unrolling_13_loop_unrolling_48_loop;
      j ++;
      unrolling_15_loop_unrolling_46_loop: ;
      if (! (j < 5)) goto unrolling_13_loop_unrolling_48_loop;
      j ++;
      unrolling_14_loop_unrolling_47_loop: ;
      /*@ loop pragma UNROLL "done", 3;
          loop pragma UNROLL 3; */
      while (j < 5) j ++;
      unrolling_13_loop_unrolling_48_loop: ;
    break;
    case 5: j = -1;
    break;
    default: ;
    goto return_label;
  }
  unrolling_44_loop: ;
  if (! foo) goto unrolling_18_loop;
  switch (j) {
    case -1: j ++;
    break;
    case 0:
      if (! (j < 5)) goto unrolling_13_loop_unrolling_43_loop;
      j ++;
      unrolling_16_loop_unrolling_40_loop: ;
      if (! (j < 5)) goto unrolling_13_loop_unrolling_43_loop;
      j ++;
      unrolling_15_loop_unrolling_41_loop: ;
      if (! (j < 5)) goto unrolling_13_loop_unrolling_43_loop;
      j ++;
      unrolling_14_loop_unrolling_42_loop: ;
      /*@ loop pragma UNROLL "done", 3;
          loop pragma UNROLL 3; */
      while (j < 5) j ++;
      unrolling_13_loop_unrolling_43_loop: ;
    break;
    case 5: j = -1;
    break;
    default: ;
    goto return_label;
  }
  unrolling_39_loop: ;
  if (! foo) goto unrolling_18_loop;
  switch (j) {
    case -1: j ++;
    break;
    case 0:
      if (! (j < 5)) goto unrolling_13_loop_unrolling_38_loop;
      j ++;
      unrolling_16_loop_unrolling_35_loop: ;
      if (! (j < 5)) goto unrolling_13_loop_unrolling_38_loop;
      j ++;
      unrolling_15_loop_unrolling_36_loop: ;
      if (! (j < 5)) goto unrolling_13_loop_unrolling_38_loop;
      j ++;
      unrolling_14_loop_unrolling_37_loop: ;
      /*@ loop pragma UNROLL "done", 3;
          loop pragma UNROLL 3; */
      while (j < 5) j ++;
      unrolling_13_loop_unrolling_38_loop: ;
    break;
    case 5: j = -1;
    break;
    default: ;
    goto return_label;
  }
  unrolling_34_loop: ;
  if (! foo) goto unrolling_18_loop;
  switch (j) {
    case -1: j ++;
    break;
    case 0:
      if (! (j < 5)) goto unrolling_13_loop_unrolling_33_loop;
      j ++;
      unrolling_16_loop_unrolling_30_loop: ;
      if (! (j < 5)) goto unrolling_13_loop_unrolling_33_loop;
      j ++;
      unrolling_15_loop_unrolling_31_loop: ;
      if (! (j < 5)) goto unrolling_13_loop_unrolling_33_loop;
      j ++;
      unrolling_14_loop_unrolling_32_loop: ;
      /*@ loop pragma UNROLL "done", 3;
          loop pragma UNROLL 3; */
      while (j < 5) j ++;
      unrolling_13_loop_unrolling_33_loop: ;
    break;
    case 5: j = -1;
    break;
    default: ;
    goto return_label;
  }
  unrolling_29_loop: ;
  if (! foo) goto unrolling_18_loop;
  switch (j) {
    case -1: j ++;
    break;
    case 0:
      if (! (j < 5)) goto unrolling_13_loop_unrolling_28_loop;
      j ++;
      unrolling_16_loop_unrolling_25_loop: ;
      if (! (j < 5)) goto unrolling_13_loop_unrolling_28_loop;
      j ++;
      unrolling_15_loop_unrolling_26_loop: ;
      if (! (j < 5)) goto unrolling_13_loop_unrolling_28_loop;
      j ++;
      unrolling_14_loop_unrolling_27_loop: ;
      /*@ loop pragma UNROLL "done", 3;
          loop pragma UNROLL 3; */
      while (j < 5) j ++;
      unrolling_13_loop_unrolling_28_loop: ;
    break;
    case 5: j = -1;
    break;
    default: ;
    goto return_label;
  }
  unrolling_24_loop: ;
  if (! foo) goto unrolling_18_loop;
  switch (j) {
    case -1: j ++;
    break;
    case 0:
      if (! (j < 5)) goto unrolling_13_loop_unrolling_23_loop;
      j ++;
      unrolling_16_loop_unrolling_20_loop: ;
      if (! (j < 5)) goto unrolling_13_loop_unrolling_23_loop;
      j ++;
      unrolling_15_loop_unrolling_21_loop: ;
      if (! (j < 5)) goto unrolling_13_loop_unrolling_23_loop;
      j ++;
      unrolling_14_loop_unrolling_22_loop: ;
      /*@ loop pragma UNROLL "done", 3;
          loop pragma UNROLL 3; */
      while (j < 5) j ++;
      unrolling_13_loop_unrolling_23_loop: ;
    break;
    case 5: j = -1;
    break;
    default: ;
    goto return_label;
  }
  unrolling_19_loop: ;
  /*@ loop pragma UNROLL SIX;
      loop pragma UNROLL "done", 6; */
  while (foo) 
    switch (j) {
      case -1: j ++;
      break;
      case 0:
        if (! (j < 5)) goto unrolling_13_loop;
        j ++;
        unrolling_16_loop: ;
        if (! (j < 5)) goto unrolling_13_loop;
        j ++;
        unrolling_15_loop: ;
        if (! (j < 5)) goto unrolling_13_loop;
        j ++;
        unrolling_14_loop: ;
        /*@ loop pragma UNROLL 3;
            loop pragma UNROLL "done", 3; */
        while (j < 5) j ++;
        unrolling_13_loop: ;
      break;
      case 5: j = -1;
      break;
      default: ;
      goto return_label;
    }
  unrolling_18_loop: ;
  if (j == 0) goto zero;
  if (j == 1) goto un;
  goto return_label;
  zero:
    if (! (j < 5)) goto unrolling_50_loop;
    un_unrolling_56_loop: j ++;
    unrolling_55_loop: ;
    if (! (j < 5)) goto unrolling_50_loop;
    un_unrolling_54_loop: j ++;
    unrolling_53_loop: ;
    if (! (j < 5)) goto unrolling_50_loop;
    un_unrolling_52_loop: j ++;
    unrolling_51_loop: ;
    /*@ loop pragma UNROLL 3;
        loop pragma UNROLL "done", 3; */
    while (j < 5) un: j ++;
    unrolling_50_loop: ;
  return_label: return;
}

void main2(void)
{
  int i;
  i = 0;
  if (! (i < 2)) goto unrolling_58_loop;
  {
    int j_unroll_186;
    j_unroll_186 = 0;
    while (j_unroll_186 < 2) {
      i ++;
      goto foo_unrolling_62_loop;
      i ++;
      foo_unrolling_62_loop: ;
      j_unroll_186 ++;
    }
  }
  i ++;
  unrolling_61_loop: ;
  if (! (i < 2)) goto unrolling_58_loop;
  {
    int j_unroll_178;
    j_unroll_178 = 0;
    while (j_unroll_178 < 2) {
      i ++;
      goto foo_unrolling_60_loop;
      i ++;
      foo_unrolling_60_loop: ;
      j_unroll_178 ++;
    }
  }
  i ++;
  unrolling_59_loop: ;
  /*@ loop pragma UNROLL 2;
      loop pragma UNROLL "done", 2; */
  while (i < 2) {
    {
      int j;
      j = 0;
      while (j < 2) {
        i ++;
        goto foo;
        i ++;
        foo: ;
        j ++;
      }
    }
    i ++;
  }
  unrolling_58_loop: ;
  return;
}

void main2_done(void)
{
  int i;
  i = 0;
  /*@ loop pragma UNROLL 2;
      loop pragma UNROLL "done", 2; */
  while (i < 2) {
    {
      int j;
      j = 0;
      if (! (j < 2)) goto unrolling_64_loop;
      i ++;
      goto foo_unrolling_68_loop;
      i ++;
      foo_unrolling_68_loop: ;
      j ++;
      unrolling_67_loop: ;
      if (! (j < 2)) goto unrolling_64_loop;
      i ++;
      goto foo_unrolling_66_loop;
      i ++;
      foo_unrolling_66_loop: ;
      j ++;
      unrolling_65_loop: ;
      /*@ loop pragma UNROLL 2;
          loop pragma UNROLL "done", 2; */
      while (j < 2) {
        i ++;
        goto foo;
        i ++;
        foo: ;
        j ++;
      }
      unrolling_64_loop: ;
    }
    i ++;
  }
  return;
}

void main3(int c)
{
  int i;
  i = 0;
  if (c == 0) goto foo;
  if (! (i < 5)) goto unrolling_70_loop;
  {
    int j_unroll_238;
    j_unroll_238 = 0;
    if (i == j_unroll_238) goto foo_unrolling_77_loop;
    if (i == 1) goto unrolling_70_loop;
    if (i == 2) goto __Cont_unrolling_80_loop;
    while (j_unroll_238 < 5) {
      if (i == j_unroll_238) break;
      if (i < j_unroll_238) goto foo_unrolling_77_loop;
      if (i == j_unroll_238 + 1) goto __Cont_0_unrolling_78_loop;
      if (i == j_unroll_238 + 2) goto up_unrolling_79_loop;
      i ++;
      foo_unrolling_77_loop: i ++;
      __Cont_0_unrolling_78_loop: j_unroll_238 ++;
    }
    up_unrolling_79_loop: ;
  }
  __Cont_unrolling_80_loop: i ++;
  unrolling_76_loop: ;
  if (! (i < 5)) goto unrolling_70_loop;
  {
    int j_unroll_216;
    j_unroll_216 = 0;
    if (i == j_unroll_216) goto foo_unrolling_72_loop;
    if (i == 1) goto unrolling_70_loop;
    if (i == 2) goto __Cont_unrolling_75_loop;
    while (j_unroll_216 < 5) {
      if (i == j_unroll_216) break;
      if (i < j_unroll_216) goto foo_unrolling_72_loop;
      if (i == j_unroll_216 + 1) goto __Cont_0_unrolling_73_loop;
      if (i == j_unroll_216 + 2) goto up_unrolling_74_loop;
      i ++;
      foo_unrolling_72_loop: i ++;
      __Cont_0_unrolling_73_loop: j_unroll_216 ++;
    }
    up_unrolling_74_loop: ;
  }
  __Cont_unrolling_75_loop: i ++;
  unrolling_71_loop: ;
  /*@ loop pragma UNROLL 2;
      loop pragma UNROLL "done", 2; */
  while (i < 5) {
    {
      int j;
      j = 0;
      if (i == j) goto foo;
      if (i == 1) break;
      if (i == 2) goto __Cont;
      while (j < 5) {
        if (i == j) break;
        if (i < j) goto foo;
        if (i == j + 1) goto __Cont_0;
        if (i == j + 2) goto up;
        i ++;
        foo: i ++;
        __Cont_0: j ++;
      }
      up: ;
    }
    __Cont: i ++;
  }
  unrolling_70_loop: ;
  return;
}


