[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing tests/spec/array_typedef.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
  
[value] computing for function create_msg <- main.
        Called from tests/spec/array_typedef.c:35.
[value] computing for function host_address <- create_msg <- main.
        Called from tests/spec/array_typedef.c:25.
[value] Recording results for host_address
[value] Done for function host_address
[value] computing for function host_address <- create_msg <- main.
        Called from tests/spec/array_typedef.c:26.
[value] Recording results for host_address
[value] Done for function host_address
tests/spec/array_typedef.c:27:[value] Assertion got status valid.
tests/spec/array_typedef.c:28:[value] Assertion got status valid.
tests/spec/array_typedef.c:29:[value] Assertion got status valid.
[value] Recording results for create_msg
[value] Done for function create_msg
[value] computing for function send_msg <- main.
        Called from tests/spec/array_typedef.c:36.
[value] computing for function send_addr <- send_msg <- main.
        Called from tests/spec/array_typedef.c:15.
[value] using specification for function send_addr
tests/spec/array_typedef.c:12:[value] warning: no \from part for clause 'assigns \empty;' of function send_addr
[value] Done for function send_addr
[value] Recording results for send_msg
[value] Done for function send_msg
[value] Recording results for main
[value] done for function main
[value] ====== VALUES COMPUTED ======
[value] Values at end of function host_address:
  i ∈ {4}
  msg1.src[0] ∈ {192}
      .src[1] ∈ {100}
      .src[2] ∈ {200}
      .src[3] ∈ {101}
      .dst[0] ∈ {192} or UNINITIALIZED
      .dst[1] ∈ {100} or UNINITIALIZED
      .dst[2] ∈ {200} or UNINITIALIZED
      .dst[3] ∈ {101} or UNINITIALIZED
[value] Values at end of function create_msg:
  msg1.src[0] ∈ {192}
      .src[1] ∈ {100}
      .src[2] ∈ {200}
      .src[3] ∈ {101}
      .dst[0] ∈ {192}
      .dst[1] ∈ {100}
      .dst[2] ∈ {200}
      .dst[3] ∈ {101}
[value] Values at end of function send_msg:
  
[value] Values at end of function main:
  msg1.src[0] ∈ {192}
      .src[1] ∈ {100}
      .src[2] ∈ {200}
      .src[3] ∈ {101}
      .dst[0] ∈ {192}
      .dst[1] ∈ {100}
      .dst[2] ∈ {200}
      .dst[3] ∈ {101}
  __retres ∈ {0}
/* Generated by Frama-C */
typedef int ip_address[4];
struct __anonstruct_msg_1 {
   ip_address src ;
   int dst[4] ;
};
typedef struct __anonstruct_msg_1 msg;
/*@ assigns \empty; */
extern void send_addr(int const * /*[4]*/ addr);

void send_msg(msg const *msg_0)
{
  send_addr(msg_0->src);
  return;
}

void host_address(int * /*[4]*/ ip)
{
  unsigned int i;
  i = sizeof(int [4]) / sizeof(int);
  *(ip + 0) = 192;
  *(ip + 1) = 100;
  *(ip + 2) = 200;
  *(ip + (i - (unsigned int)1)) = 101;
  return;
}

void create_msg(msg *msg_0)
{
  host_address(msg_0->src);
  host_address(msg_0->dst);
  /*@ assert msg_0->dst[0] ≡ 192; */ ;
  /*@ assert msg_0->src[0] ≡ 192; */ ;
  /*@ assert msg_0->dst[sizeof(ip_address)/sizeof(int)-1] ≡ 101; */ ;
  return;
}

int main(void)
{
  int __retres;
  msg msg1;
  create_msg(& msg1);
  send_msg((msg const *)(& msg1));
  __retres = 0;
  return __retres;
}


