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.