unary negation of enum constant always yield 0
ID0002090:
**This issue was created automatically from Mantis Issue 2090. Further discussion may take place here.**
---
| **Id** | **Project** | **Category** | **View** | **Due Date** | **Updated** |
| --- | --- | --- | --- | --- | --- |
| ID0002090 | Frama-C | Kernel | public | 2015-03-19 | 2016-01-26 |
| | | | | | |
| --- | --- | --- | --- | --- | --- |
| **Reporter** | virgile | **Assigned To** | yakobowski | **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 Magnesium |
### Description :
The following code (note that g is only here to retain the enum definition itself in the generated AST).
enum Foo { E1, E2, E3 };
int f() { return !E1; }
int g() { return E1; }
is translated by Frama-C as
enum Foo {
E1 = 0,
E2 = 1,
E3 = 2
};
int f(void)
{
int __retres;
__retres = 0;
return __retres;
}
int g(void)
{
int __retres;
__retres = E1;
return __retres;
}
f should in fact return 1, as E1 is bound to 0
issue