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