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.