[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing tests/constant_propagation/declaration.c (with preprocessing)
[value] Analyzing a complete application starting at main
[value] Computing initial state
[value] Initial state computed
[value] Values of globals at initialization
  X ∈ [--..--]
  Y ∈ {-42}
[value] computing for function f <- main.
        Called from tests/constant_propagation/declaration.c:27.
tests/constant_propagation/declaration.c:6:[kernel] warning: signed overflow. assert *x+1 ≤ 2147483647;
[value] computing for function h <- f <- main.
        Called from tests/constant_propagation/declaration.c:8.
tests/constant_propagation/declaration.c:22:[kernel] warning: signed overflow. assert *x+2 ≤ 2147483647;
[value] Recording results for h
[value] Done for function h
[value] Recording results for f
[value] Done for function f
[value] computing for function g <- main.
        Called from tests/constant_propagation/declaration.c:28.
tests/constant_propagation/declaration.c:12:[kernel] warning: signed overflow. assert *x+1 ≤ 2147483647;
[value] computing for function h <- g <- main.
        Called from tests/constant_propagation/declaration.c:14.
[value] Recording results for h
[value] Done for function h
[value] Recording results for g
[value] Done for function g
[value] Recording results for main
[value] done for function main
[value] ====== VALUES COMPUTED ======
[value] Values at end of function h:
  X ∈ [-2147483645..2147483647]
  Y ∈ {-36; -30}
[value] Values at end of function f:
  X ∈ [-2147483645..2147483647]
  Y ∈ {-36}
[value] Values at end of function g:
  X ∈ [-2147483642..2147483647]
  Y ∈ {-30}
[value] Values at end of function main:
  X ∈ [-2147483642..2147483647]
  Y ∈ {-30}
[scf] beginning constant propagation
/* Generated by Frama-C */
void h(int *x, int *y);

int Y;

extern int X;

void f(int *x, int *y, void (*p)(int *x, int *y))
{
  /*@ assert Value: signed_overflow: *x+1 ≤ 2147483647; */
  X ++;
  Y = -41;
  h(& X,& Y);
  return;
}

void g(int *x, int *y, void (*p)(int *x, int *y))
{
  /*@ assert Value: signed_overflow: *x+1 ≤ 2147483647; */
  X ++;
  Y = -35;
  h(& X,& Y);
  return;
}

int Y = -42;
void h(int *x, int *y)
{
  /*@ assert Value: signed_overflow: *x+2 ≤ 2147483647; */
  X += 2;
  Y += 5;
  return;
}

int main(void)
{
  f(& X,& Y,& h);
  g(& X,& Y,& h);
  return Y;
}


[scf] constant propagation done
[scf] beginning constant propagation
[value] Analyzing a complete application starting at main
[value] Computing initial state
[value] Initial state computed
[value] Values of globals at initialization
  X ∈ [--..--]
  Y ∈ {-42}
[value] computing for function f <- main.
        Called from tests/constant_propagation/declaration.c:27.
tests/constant_propagation/declaration.c:6:[kernel] warning: signed overflow. assert X+1 ≤ 2147483647;
[value] computing for function h <- f <- main.
        Called from tests/constant_propagation/declaration.c:8.
tests/constant_propagation/declaration.c:22:[kernel] warning: signed overflow. assert X+2 ≤ 2147483647;
[value] Recording results for h
[value] Done for function h
[value] Recording results for f
[value] Done for function f
[value] computing for function g <- main.
        Called from tests/constant_propagation/declaration.c:28.
tests/constant_propagation/declaration.c:12:[kernel] warning: signed overflow. assert X+1 ≤ 2147483647;
[value] computing for function h <- g <- main.
        Called from tests/constant_propagation/declaration.c:14.
[value] Recording results for h
[value] Done for function h
[value] Recording results for g
[value] Done for function g
[value] Recording results for main
[value] done for function main
/* Generated by Frama-C */
void h(int *x, int *y);

int Y;

extern int X;

void f(int *x, int *y, void (*p)(int *x, int *y))
{
  /*@ assert Value: signed_overflow: *x+1 ≤ 2147483647; */
  /*@ assert Value: signed_overflow: X+1 ≤ 2147483647; */
  X ++;
  Y = -41;
  h(& X,& Y);
  return;
}

void g(int *x, int *y, void (*p)(int *x, int *y))
{
  /*@ assert Value: signed_overflow: *x+1 ≤ 2147483647; */
  /*@ assert Value: signed_overflow: X+1 ≤ 2147483647; */
  X ++;
  Y = -35;
  h(& X,& Y);
  return;
}

int Y = -42;
void h(int *x, int *y)
{
  /*@ assert Value: signed_overflow: *x+2 ≤ 2147483647; */
  /*@ assert Value: signed_overflow: X+2 ≤ 2147483647; */
  X += 2;
  Y += 5;
  return;
}

int main(void)
{
  f(& X,& Y,& h);
  g(& X,& Y,& h);
  return Y;
}


[scf] constant propagation done, result is in project `propagated 2`
