Skip to content

Blocks are removed from the AST

ID0000245: This issue was created automatically from Mantis Issue 245. Further discussion may take place here.


Id Project Category View Due Date Updated
ID0000245 Frama-C Kernel public 2009-09-15 2014-02-12
Reporter pascal Assigned To virgile Resolution fixed
Priority normal Severity major Reproducibility always
Platform - OS - OS Version -
Product Version Frama-C Beryllium-20090901 Target Version - Fixed in Version Frama-C Boron-20100401

Description :

Some blocks are removed from the AST. This makes the value analysis incorrect wrt block-local variables.

int R,*p,S,*q;

void main(int c, int d) { int a,i; a=2; p = q = &a; // for(i=0; i<2; i++) { int u=a; p = &u; toto: { int v; v = 3; v++; q = &v; } } if (c) R = *p; if (d) S = *q; // if (a-a) goto toto; }

bin/toplevel.byte -val u.c

p ? {{}} or ESCAPINGADDR q ? {{ &v ;}}

Expected results: q ? {{}} or ESCAPINGADDR

Note that the label on the block participates in the problem.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information