[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing tests/slicing/ptr_fct.c (with preprocessing)
[slicing] slicing requests in progress...
[value] Analyzing a complete application starting at h
[value] Computing initial state
[value] Initial state computed
[value] Values of globals at initialization
  X ∈ {0}
  ptf ∈ {0}
[value] computing for function g <- h.
        Called from tests/slicing/ptr_fct.c:23.
[value] computing for function f1 <- g <- h.
        Called from tests/slicing/ptr_fct.c:17.
[value] Recording results for f1
[value] Done for function f1
[value] computing for function f2 <- g <- h.
        Called from tests/slicing/ptr_fct.c:17.
tests/slicing/ptr_fct.c:17:[kernel] warning: Neither code nor specification for function f2, generating default assigns from the prototype
[value] using specification for function f2
[value] Done for function f2
[value] Recording results for g
[value] Done for function g
[value] Recording results for h
[value] done for function h
[slicing] making slicing project 'Slicing'...
[slicing] interpreting slicing requests from the command line...
[pdg] computing for function h
[from] Computing for function g
[from] Computing for function f1 <-g
[from] Done for function f1
[from] Computing for function f2 <-g
[from] Done for function f2
[from] Done for function g
[pdg] done for function h
[slicing] applying all slicing requests...
[slicing] applying 0 actions...
[slicing] applying all slicing requests...
[slicing] applying 1 actions...
[slicing] applying actions: 1/1...
[pdg] computing for function g
[pdg] done for function g
[slicing] exporting project to 'Slicing export'...
[slicing] applying all slicing requests...
[slicing] applying 0 actions...
[sparecode] remove unused global declarations from project 'Slicing export tmp'
[sparecode] removed unused global declarations in new project 'Slicing export'
/* Generated by Frama-C */
typedef void (*PTF)(int );
int X;
void f1(int x)
{
  X = x;
  return;
}

/*@ assigns \nothing; */
extern void f2(int y);

void (*ptf)(int ) = (void (*)(int ))0;
void g(int arg);

void g_slice_1(int arg)
{
  if (arg > 0) ptf = & f1; else ptf = & f2;
  (*ptf)(arg);
  return;
}

PTF h(int a, int b)
{
  if (b) {
    ptf = & g;
    g_slice_1(a);
  }
  return ptf;
}


