
;; Function f (f)

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

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

count_11 -> { count_1 }

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: 4

Number of blocks in CFG: 6
Number of blocks to update: 3 ( 50%)




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

i_12 -> { i_2 }

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: 4

Number of blocks in CFG: 6
Number of blocks to update: 2 ( 33%)




Value ranges after VRP:

count_1: [0, +INF]
i_2: VARYING
start_4(D): VARYING
end_6(D): VARYING
D.2014_7: [0, +INF]
D.2015_8: [0, +INF]
a_9(D): VARYING
D.2016_10: VARYING
count_11: [0, +INF]
i_12: [-INF, end_6(D)]  EQUIVALENCES: { i_2 } (1 elements)
b_13(D): VARYING
D.2017_14: VARYING
D.2018_15: VARYING
c_16(D): VARYING
D.2019_17: VARYING
count_18: [1, +INF(OVF)]
i_19: VARYING
D.2020_21: VARYING
D.2021_22: VARYING
D.2022_23: VARYING
.MEM_25: VARYING


f (int start, int end, int * a, int * b, int c, struct s * sp)
{
  int i;
  int count;
  int (*<T264>) (const char *, void *, int *) D.2022;
  void * D.2021;
  struct s * D.2020;
  int D.2019;
  int D.2018;
  int * D.2017;
  int * D.2016;
  long unsigned int D.2015;
  long unsigned int D.2014;

<bb 2>:
  goto <bb 4>;

<bb 3>:
  D.2014_7 = (long unsigned int) i_2;
  D.2015_8 = D.2014_7 * 4;
  D.2016_10 = a_9(D) + D.2015_8;
  D.2017_14 = b_13(D) + D.2015_8;
  D.2018_15 = *D.2017_14;
  D.2019_17 = D.2018_15 + c_16(D);
  *D.2016_10 = D.2019_17;
  count_18 = count_1 + 1;
  i_19 = i_2 + 1;

<bb 4>:
  # count_1 = PHI <0(2), count_18(3)>
  # i_2 = PHI <start_4(D)(2), i_19(3)>
  if (i_2 <= end_6(D))
    goto <bb 3>;
  else
    goto <bb 5>;

<bb 5>:
  # count_11 = PHI <count_1(4)>
  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;

}


