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