Multiple branches to a label/loop entries crashes wp
ID0001279:
**This issue was created automatically from Mantis Issue 1279. Further discussion may take place here.**
---
| **Id** | **Project** | **Category** | **View** | **Due Date** | **Updated** |
| --- | --- | --- | --- | --- | --- |
| ID0001279 | Frama-C | Plug-in > wp | public | 2012-10-13 | 2012-10-13 |
| | | | | | |
| --- | --- | --- | --- | --- | --- |
| **Reporter** | sjw | **Assigned To** | correnson | **Resolution** | open |
| **Priority** | normal | **Severity** | crash | **Reproducibility** | always |
| **Platform** | - | **OS** | - | **OS Version** | - |
| **Product Version** | Frama-C Oxygen-20120901 | **Target Version** | - | **Fixed in Version** | - |
### Description :
The following code:
/*@ ensures \result == x; */
int test(int x)
{
again:
if (x > 10)
goto again;
if (x > 10)
goto again;
return x;
}
gives
$ ~/frama-c/bin/frama-c -wp doublegoto.c
[kernel] preprocessing with "gcc -C -E -I. doublegoto.c"
[wp] Running WP plugin...
[wp] Collecting axiomatic usage
[wp] warning: Missing RTE guards
[wp] failure: CFG node <loop-1> has 2 successors instead of 1
...
This is caused by the use of a list for loop headers in cil2cfg.ml. The
attached patch fixes this by using a set of nodes.
## Attachments
- [goto.diff](/uploads/7ba7b9828d39e5be247e9fb3e8ba11cb/goto.diff)
issue