r13586 Spurious "assert \separated(...)" (csmith)
ID0000832:
**This issue was created automatically from Mantis Issue 832. Further discussion may take place here.**
---
| **Id** | **Project** | **Category** | **View** | **Due Date** | **Updated** |
| --- | --- | --- | --- | --- | --- |
| ID0000832 | Frama-C | Kernel | public | 2011-05-24 | 2014-02-12 |
| | | | | | |
| --- | --- | --- | --- | --- | --- |
| **Reporter** | pascal | **Assigned To** | virgile | **Resolution** | fixed |
| **Priority** | normal | **Severity** | minor | **Reproducibility** | always |
| **Platform** | - | **OS** | - | **OS Version** | - |
| **Product Version** | Frama-C GIT, precise the release id | **Target Version** | - | **Fixed in Version** | Frama-C Nitrogen-20111001 |
### Description :
file t.c:
int a, *G;
int g(int x, int y)
{
return x + y;
}
main(int c, char **v){
G = &a;
*G =
(a < (g((0U ||
(((a ^ a) <= a) < ((*G) || a))), 5)));
return a;
}
$ ~/ppc/bin/toplevel.byte -val -unspecified-access t.c
t.c:13:[kernel] warning: Unspecified sequence with side effect:
/* <- a G *G */
if (*G) { tmp = 1; } else { if (a) { tmp = 1; } else { tmp = 0; } }
/* <- a a a */
/* <- */
tmp_0 = g((((a ^ a) <= a) < tmp) != 0,5);
/* *G <- G a */
*G = a < tmp_0;
...
t.c:13:[kernel] warning: undefined multiple accesses in expression. assert \separated(G,& a);
t.c:13:[kernel] warning: undefined multiple accesses in expression. assert \separated(G,G);
...
The program is completely defined, g has no side-effects.
issue