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.
issue