[kernel] Parsing share/libc/__fc_builtin_for_normalization.i (no preprocessing)
[kernel] Parsing tests/rte/valid.c (with preprocessing)
[rte] annotating function main
/* Generated by Frama-C */
struct R {
   int v ;
};
struct P;
struct Q {
   int v ;
   int id[12] ;
   struct P *next ;
   struct R tr[13] ;
};
struct P {
   int val ;
   struct P *next ;
   int id[5] ;
   int oth[6][7] ;
   struct P *nexts[8][9] ;
   struct Q q ;
   struct Q tq[10][11] ;
   struct P ***znexts ;
};
int main(void)
{
  struct P ***pppp;
  struct P **ppp;
  struct P *pp;
  struct P p;
  int v;
  struct Q q;
  int *i;
  int j;
  int i0;
  int i1;
  int i2;
  int i3;
  int i4;
  struct P *tmp;
  struct P np;
  struct P *npp;
  struct P *z;
  i0 = 0;
  i1 = 1;
  i2 = 2;
  i3 = 3;
  i4 = 4;
  j = 0;
  i = & j;
  pp = & p;
  ppp = & pp;
  pppp = & ppp;
  p.next = pp;
  p.znexts = pppp;
  { /* sequence */
    tmp = pp;
    /*@ assert rte: index_bound: 0 ≤ i2; */
    /*@ assert rte: index_bound: i2 < 8; */
    /*@ assert rte: index_bound: 0 ≤ i3; */
    /*@ assert rte: index_bound: i3 < 9; */
    p.nexts[i2][i3] = tmp;
    /*@ assert rte: index_bound: 0 ≤ i0; */
    /*@ assert rte: index_bound: i0 < 8; */
    /*@ assert rte: index_bound: 0 ≤ i1; */
    /*@ assert rte: index_bound: i1 < 9; */
    p.nexts[i0][i1] = tmp;
  }
  q.next = pp;
  /*@ assert rte: index_bound: 0 ≤ i0; */
  /*@ assert rte: index_bound: i0 < 12; */
  q.id[i0] = 0;
  p.q = q;
  /*@ assert rte: index_bound: 0 ≤ i0; */
  /*@ assert rte: index_bound: i0 < 10; */
  /*@ assert rte: index_bound: 0 ≤ i1; */
  /*@ assert rte: index_bound: i1 < 11; */
  p.tq[i0][i1] = q;
  /*@ assert rte: index_bound: 0 ≤ i1; */
  /*@ assert rte: index_bound: i1 < 5; */
  /*@ assert rte: index_bound: 0 ≤ i2; */
  /*@ assert rte: index_bound: i2 < 5; */
  p.id[i1] = p.id[i2];
  /*@ assert rte: index_bound: 0 ≤ i1; */
  /*@ assert rte: index_bound: i1 < 5; */
  /*@ assert rte: index_bound: 0 ≤ i3; */
  /*@ assert rte: index_bound: i3 < 5; */
  p.id[i1] = p.id[i3];
  /*@ assert rte: mem_access: \valid_read(p.next); */
  np = *(p.next);
  npp = p.next;
  v = p.id[3];
  /*@ assert rte: mem_access: \valid_read(&pp->id[3]); */
  v = pp->id[3];
  /*@ assert rte: mem_access: \valid_read(i); */
  v = *i;
  /*@ assert rte: mem_access: \valid_read(&pp->val); */
  v = pp->val;
  /*@ assert rte: mem_access: \valid_read(&pp->id[3]); */
  v = pp->id[3];
  /*@ assert rte: index_bound: 0 ≤ i0; */
  /*@ assert rte: index_bound: i0 < 8; */
  /*@ assert rte: index_bound: 0 ≤ i1; */
  /*@ assert rte: index_bound: i1 < 9; */
  /*@ assert rte: mem_access: \valid_read(&pp->nexts[i0][i1]); */
  z = pp->nexts[i0][i1];
  /*@ assert rte: index_bound: 0 ≤ i0; */
  /*@ assert rte: index_bound: i0 < 8; */
  /*@ assert rte: index_bound: 0 ≤ i1; */
  /*@ assert rte: index_bound: i1 < 9; */
  /*@ assert rte: mem_access: \valid_read(&pp->nexts[i0][i1]); */
  /*@ assert rte: mem_access: \valid_read(&(pp->nexts[i0][i1])->val); */
  v = (pp->nexts[i0][i1])->val;
  /*@ assert rte: mem_access: \valid_read(&pp->next); */
  /*@ assert rte: mem_access: \valid_read(&(pp->next)->val); */
  v = (pp->next)->val;
  /*@ assert rte: mem_access: \valid_read(&pp->next); */
  /*@ assert rte: mem_access: \valid_read(&(pp->next)->next); */
  /*@ assert rte: mem_access: \valid_read(&((pp->next)->next)->val); */
  v = ((pp->next)->next)->val;
  /*@ assert rte: index_bound: 0 ≤ i0; */
  /*@ assert rte: index_bound: i0 < 8; */
  /*@ assert rte: index_bound: 0 ≤ i1; */
  /*@ assert rte: index_bound: i1 < 9; */
  /*@ assert rte: mem_access: \valid_read(&(p.nexts[i0][i1])->val); */
  v = (p.nexts[i0][i1])->val;
  /*@ assert rte: index_bound: 0 ≤ i2; */
  /*@ assert rte: index_bound: i2 < 5; */
  /*@ assert rte: mem_access: \valid_read(&pp->id[i2]); */
  v = pp->id[i2];
  /*@ assert rte: index_bound: 0 ≤ i0; */
  /*@ assert rte: index_bound: i0 < 6; */
  /*@ assert rte: index_bound: 0 ≤ i1; */
  /*@ assert rte: index_bound: i1 < 7; */
  /*@ assert rte: mem_access: \valid_read(&pp->oth[i0][i1]); */
  v = pp->oth[i0][i1];
  /*@ assert rte: index_bound: 0 ≤ i1; */
  /*@ assert rte: index_bound: i1 < 8; */
  /*@ assert rte: index_bound: 0 ≤ i2; */
  /*@ assert rte: index_bound: i2 < 9; */
  /*@ assert rte: mem_access: \valid_read(i); */
  /*@ assert rte: index_bound: 0 ≤ i3; */
  /*@ assert rte: index_bound: i3 < 8; */
  /*@ assert rte: index_bound: 0 ≤ *i; */
  /*@ assert rte: index_bound: *i < 9; */
  /*@ assert rte: mem_access: \valid_read(&(p.nexts[i1][i2])->nexts[i3][*i]);
  */
  /*@ assert rte: index_bound: 0 ≤ i4; */
  /*@ assert rte: index_bound: i4 < 5; */
  /*@ assert
      rte: mem_access:
        \valid_read(&((p.nexts[i1][i2])->nexts[i3][*i])->id[i4]);
  */
  v = ((p.nexts[i1][i2])->nexts[i3][*i])->id[i4];
  v = p.q.v;
  /*@ assert rte: index_bound: 0 ≤ i4; */
  /*@ assert rte: index_bound: i4 < 12; */
  v = p.q.id[i4];
  /*@ assert rte: index_bound: 0 ≤ i3; */
  /*@ assert rte: index_bound: i3 < 10; */
  /*@ assert rte: index_bound: 0 ≤ i1; */
  /*@ assert rte: index_bound: i1 < 11; */
  v = p.tq[i3][i1].v;
  /*@ assert rte: index_bound: 0 ≤ i1; */
  /*@ assert rte: index_bound: i1 < 10; */
  /*@ assert rte: index_bound: 0 ≤ i2; */
  /*@ assert rte: index_bound: i2 < 11; */
  /*@ assert rte: index_bound: 0 ≤ i3; */
  /*@ assert rte: index_bound: i3 < 10; */
  /*@ assert rte: index_bound: 0 ≤ i4; */
  /*@ assert rte: index_bound: i4 < 11; */
  /*@ assert
      rte: mem_access: \valid_read(&(p.tq[i1][i2].next)->tq[i3][i4].v);
  */
  v = (p.tq[i1][i2].next)->tq[i3][i4].v;
  /*@ assert rte: index_bound: 0 ≤ i3; */
  /*@ assert rte: index_bound: i3 < 10; */
  /*@ assert rte: index_bound: 0 ≤ i1; */
  /*@ assert rte: index_bound: i1 < 11; */
  /*@ assert rte: mem_access: \valid_read(&pp->tq[i3][i1].v); */
  v = pp->tq[i3][i1].v;
  /*@ assert rte: mem_access: \valid_read(p.znexts+i0); */
  /*@ assert rte: mem_access: \valid_read(*(p.znexts+i0)+i1); */
  /*@ assert rte: mem_access: \valid_read(&(*(*(p.znexts+i0)+i1)+i2)->val);
  */
  v = (*(*(p.znexts + i0) + i1) + i2)->val;
  /*@ assert rte: index_bound: 0 ≤ i0; */
  /*@ assert rte: index_bound: i0 < 10; */
  /*@ assert rte: index_bound: 0 ≤ i1; */
  /*@ assert rte: index_bound: i1 < 11; */
  q = p.tq[i0][i1];
  /*@ assert rte: index_bound: 0 ≤ i0; */
  /*@ assert rte: index_bound: i0 < 10; */
  /*@ assert rte: index_bound: 0 ≤ i1; */
  /*@ assert rte: index_bound: i1 < 11; */
  /*@ assert rte: index_bound: 0 ≤ i2; */
  /*@ assert rte: index_bound: i2 < 13; */
  v = p.tq[i0][i1].tr[i2].v;
  /*@ assert rte: mem_access: \valid_read(&pp->val); */
  v = pp->val;
  v = p.val;
  /*@ assert rte: index_bound: 0 ≤ i0; */
  /*@ assert rte: index_bound: i0 < 10; */
  /*@ assert rte: index_bound: 0 ≤ i1; */
  /*@ assert rte: index_bound: i1 < 11; */
  v = p.tq[i0][i1].v;
  return v;
}


[rte] annotating function main
/* Generated by Frama-C */
struct R {
   int v ;
};
struct P;
struct Q {
   int v ;
   int id[12] ;
   struct P *next ;
   struct R tr[13] ;
};
struct P {
   int val ;
   struct P *next ;
   int id[5] ;
   int oth[6][7] ;
   struct P *nexts[8][9] ;
   struct Q q ;
   struct Q tq[10][11] ;
   struct P ***znexts ;
};
int main(void)
{
  struct P ***pppp;
  struct P **ppp;
  struct P *pp;
  struct P p;
  int v;
  struct Q q;
  int *i;
  int j;
  int i0;
  int i1;
  int i2;
  int i3;
  int i4;
  struct P *tmp;
  struct P np;
  struct P *npp;
  struct P *z;
  i0 = 0;
  i1 = 1;
  i2 = 2;
  i3 = 3;
  i4 = 4;
  j = 0;
  i = & j;
  pp = & p;
  ppp = & pp;
  pppp = & ppp;
  p.next = pp;
  p.znexts = pppp;
  { /* sequence */
    tmp = pp;
    /*@ assert rte: mem_access: \valid(&p.nexts[i2][i3]); */
    p.nexts[i2][i3] = tmp;
    /*@ assert rte: mem_access: \valid(&p.nexts[i0][i1]); */
    p.nexts[i0][i1] = tmp;
  }
  q.next = pp;
  /*@ assert rte: mem_access: \valid(&q.id[i0]); */
  q.id[i0] = 0;
  p.q = q;
  /*@ assert rte: mem_access: \valid(&p.tq[i0][i1]); */
  p.tq[i0][i1] = q;
  /*@ assert rte: mem_access: \valid(&p.id[i1]); */
  /*@ assert rte: mem_access: \valid_read(&p.id[i2]); */
  p.id[i1] = p.id[i2];
  /*@ assert rte: mem_access: \valid(&p.id[i1]); */
  /*@ assert rte: mem_access: \valid_read(&p.id[i3]); */
  p.id[i1] = p.id[i3];
  /*@ assert rte: mem_access: \valid_read(p.next); */
  np = *(p.next);
  npp = p.next;
  /*@ assert rte: mem_access: \valid_read(&p.id[3]); */
  v = p.id[3];
  /*@ assert rte: mem_access: \valid_read(&pp->id[3]); */
  v = pp->id[3];
  /*@ assert rte: mem_access: \valid_read(i); */
  v = *i;
  /*@ assert rte: mem_access: \valid_read(&pp->val); */
  v = pp->val;
  /*@ assert rte: mem_access: \valid_read(&pp->id[3]); */
  v = pp->id[3];
  /*@ assert rte: mem_access: \valid_read(&pp->nexts[i0][i1]); */
  z = pp->nexts[i0][i1];
  /*@ assert rte: mem_access: \valid_read(&pp->nexts[i0][i1]); */
  /*@ assert rte: mem_access: \valid_read(&(pp->nexts[i0][i1])->val); */
  v = (pp->nexts[i0][i1])->val;
  /*@ assert rte: mem_access: \valid_read(&pp->next); */
  /*@ assert rte: mem_access: \valid_read(&(pp->next)->val); */
  v = (pp->next)->val;
  /*@ assert rte: mem_access: \valid_read(&pp->next); */
  /*@ assert rte: mem_access: \valid_read(&(pp->next)->next); */
  /*@ assert rte: mem_access: \valid_read(&((pp->next)->next)->val); */
  v = ((pp->next)->next)->val;
  /*@ assert rte: mem_access: \valid_read(&p.nexts[i0][i1]); */
  /*@ assert rte: mem_access: \valid_read(&(p.nexts[i0][i1])->val); */
  v = (p.nexts[i0][i1])->val;
  /*@ assert rte: mem_access: \valid_read(&pp->id[i2]); */
  v = pp->id[i2];
  /*@ assert rte: mem_access: \valid_read(&pp->oth[i0][i1]); */
  v = pp->oth[i0][i1];
  /*@ assert rte: mem_access: \valid_read(&p.nexts[i1][i2]); */
  /*@ assert rte: mem_access: \valid_read(i); */
  /*@ assert rte: mem_access: \valid_read(&(p.nexts[i1][i2])->nexts[i3][*i]);
  */
  /*@ assert
      rte: mem_access:
        \valid_read(&((p.nexts[i1][i2])->nexts[i3][*i])->id[i4]);
  */
  v = ((p.nexts[i1][i2])->nexts[i3][*i])->id[i4];
  v = p.q.v;
  /*@ assert rte: mem_access: \valid_read(&p.q.id[i4]); */
  v = p.q.id[i4];
  /*@ assert rte: mem_access: \valid_read(&p.tq[i3][i1].v); */
  v = p.tq[i3][i1].v;
  /*@ assert rte: mem_access: \valid_read(&p.tq[i1][i2].next); */
  /*@ assert
      rte: mem_access: \valid_read(&(p.tq[i1][i2].next)->tq[i3][i4].v);
  */
  v = (p.tq[i1][i2].next)->tq[i3][i4].v;
  /*@ assert rte: mem_access: \valid_read(&pp->tq[i3][i1].v); */
  v = pp->tq[i3][i1].v;
  /*@ assert rte: mem_access: \valid_read(p.znexts+i0); */
  /*@ assert rte: mem_access: \valid_read(*(p.znexts+i0)+i1); */
  /*@ assert rte: mem_access: \valid_read(&(*(*(p.znexts+i0)+i1)+i2)->val);
  */
  v = (*(*(p.znexts + i0) + i1) + i2)->val;
  /*@ assert rte: mem_access: \valid_read(&p.tq[i0][i1]); */
  q = p.tq[i0][i1];
  /*@ assert rte: mem_access: \valid_read(&p.tq[i0][i1].tr[i2].v); */
  v = p.tq[i0][i1].tr[i2].v;
  /*@ assert rte: mem_access: \valid_read(&pp->val); */
  v = pp->val;
  v = p.val;
  /*@ assert rte: mem_access: \valid_read(&p.tq[i0][i1].v); */
  v = p.tq[i0][i1].v;
  return v;
}


