
;; Function f (f)

;; 2 loops found
;;
;; Loop 0
;;  header 0, latch 1
;;  depth 0, outer -1
;;  nodes: 0 1 2 3 4 7 5 6
;;
;; Loop 1
;;  header 4, latch 7
;;  depth 1, outer 0
;;  nodes: 4 7
;; 2 succs { 3 6 }
;; 3 succs { 4 }
;; 4 succs { 7 5 }
;; 7 succs { 4 }
;; 5 succs { 6 }
;; 6 succs { 1 }

SSA replacement table
N_i -> { O_1 ... O_j } means that N_i replaces O_1, ..., O_j

end_7 -> { end_6(D) }
start_32 -> { start_4(D) }

Number of virtual NEW -> OLD mappings:       0
Number of real NEW -> OLD mappings:          2
Number of total NEW -> OLD mappings:         2

Number of virtual symbols: 0


Incremental SSA update started at block: 2

Number of blocks in CFG: 8
Number of blocks to update: 4 ( 50%)




Value ranges after VRP:

start_4(D): VARYING
end_6(D): VARYING
end_7: [start_32, +INF]  EQUIVALENCES: { end_6(D) } (1 elements)
a_9(D): VARYING
count_11: VARYING
b_13(D): VARYING
D.2018_15: VARYING
c_16(D): VARYING
D.2019_17: VARYING
D.2020_21: VARYING
D.2021_22: VARYING
D.2022_23: VARYING
start_32: [-INF, end_6(D)]  EQUIVALENCES: { start_4(D) } (1 elements)
.MEM_33: VARYING
.MEM_34: VARYING
count_37: VARYING
D.2042_38: VARYING
D.2043_39: [0, +INF]
D.2044_40: [0, +INF]
D.2045_41: [0, +INF]
D.2046_42: VARYING
ivtmp.16_43: VARYING
ivtmp.16_44: [0, +INF]
D.2056_45: [0, +INF]
D.2057_46: [0, +INF]
D.2058_47: VARYING
D.2059_48: VARYING
D.2060_49: [0, +INF]
D.2061_50: [0, +INF]
D.2062_51: VARYING
D.2063_52: VARYING
D.2064_53: [0, +INF]
D.2065_54: [0, +INF]
D.2066_55: [0, +INF]
D.2067_56: [0, 4294967295]
D.2068_57: [1, 4294967296]
D.2069_58: [4, 17179869184]


Removing basic block 7
f (int start, int end, int * a, int * b, int c, struct s * sp)
{
  unsigned int D.2064;
  unsigned int D.2065;
  unsigned int D.2066;
  long unsigned int D.2067;
  long unsigned int D.2068;
  long unsigned int D.2069;
  int * D.2063;
  long unsigned int D.2060;
  long unsigned int D.2061;
  int * D.2062;
  int * D.2059;
  long unsigned int D.2056;
  long unsigned int D.2057;
  int * D.2058;
  long unsigned int ivtmp.16;
  int D.2042;
  unsigned int D.2043;
  unsigned int D.2044;
  unsigned int D.2045;
  int D.2046;
  int count;
  int (*<T264>) (const char *, void *, int *) D.2022;
  void * D.2021;
  struct s * D.2020;
  int D.2019;
  int D.2018;

<bb 2>:
  if (start_4(D) <= end_6(D))
    goto <bb 3>;
  else
    goto <bb 6>;

<bb 3>:
  D.2064_53 = (unsigned int) end_6(D);
  D.2065_54 = (unsigned int) start_4(D);
  D.2066_55 = D.2064_53 - D.2065_54;
  D.2067_56 = (long unsigned int) D.2066_55;
  D.2068_57 = D.2067_56 + 1;
  D.2069_58 = D.2068_57 * 4;

<bb 4>:
  # ivtmp.16_43 = PHI <ivtmp.16_44(4), 0(3)>
  D.2056_45 = (long unsigned int) start_4(D);
  D.2057_46 = D.2056_45 * 4;
  D.2058_47 = b_13(D) + D.2057_46;
  D.2059_48 = D.2058_47 + ivtmp.16_43;
  D.2018_15 = MEM[base: D.2059_48, offset: 0B];
  D.2019_17 = D.2018_15 + c_16(D);
  D.2060_49 = (long unsigned int) start_4(D);
  D.2061_50 = D.2060_49 * 4;
  D.2062_51 = a_9(D) + D.2061_50;
  D.2063_52 = D.2062_51 + ivtmp.16_43;
  MEM[base: D.2063_52, offset: 0B] = D.2019_17;
  ivtmp.16_44 = ivtmp.16_43 + 4;
  if (ivtmp.16_44 != D.2069_58)
    goto <bb 4>;
  else
    goto <bb 5>;

<bb 5>:
  D.2042_38 = ~start_4(D);
  D.2043_39 = (unsigned int) D.2042_38;
  D.2044_40 = (unsigned int) end_6(D);
  D.2045_41 = D.2044_40 + D.2043_39;
  D.2046_42 = (int) D.2045_41;
  count_37 = D.2046_42 + 2;

<bb 6>:
  # count_11 = PHI <count_37(5), 0(2)>
  D.2020_21 = sp_20(D)->s;
  D.2021_22 = D.2020_21->vp;
  D.2022_23 = (int (*<T264>) (const char *, void *, int *)) D.2021_22;
  D.2022_23 ("Hello World!\n", exit, &M_var);
  return count_11;

}



;; Function g (g)

;; 1 loops found
;;
;; Loop 0
;;  header 0, latch 1
;;  depth 0, outer -1
;;  nodes: 0 1 2 3 4
;; 2 succs { 4 3 }
;; 3 succs { 4 }
;; 4 succs { 1 }

SSA replacement table
N_i -> { O_1 ... O_j } means that N_i replaces O_1, ..., O_j

csui.0_5 -> { csui.0_8 }

Number of virtual NEW -> OLD mappings:       0
Number of real NEW -> OLD mappings:          1
Number of total NEW -> OLD mappings:         1

Number of virtual symbols: 0


Incremental SSA update started at block: 2

Number of blocks in CFG: 5
Number of blocks to update: 2 ( 40%)




Value ranges after VRP:

D.2012_1: VARYING
i_2(D): VARYING
csui.0_5: [0, 4]  EQUIVALENCES: { csui.0_8 } (1 elements)
D.2012_6: VARYING
D.2029_7: [0, +INF]
csui.0_8: [0, +INF]


g (int i)
{
  unsigned int D.2029;
  unsigned int csui.0;
  int D.2012;

<bb 2>:
  D.2029_7 = (unsigned int) i_2(D);
  csui.0_8 = D.2029_7 + 4294967295;
  if (csui.0_8 <= 4)
    goto <bb 3> (<L9>);
  else
    goto <bb 4> (<L10>);

<L9>:
  D.2012_6 = CSWTCH.1[csui.0_8];

  # D.2012_1 = PHI <D.2012_6(3), 0(2)>
<L10>:
<L7>:
  return D.2012_1;

}


