summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cfrontend/Cil2Csyntax.ml2
-rw-r--r--test/c/Results/initializersbin277 -> 292 bytes
-rw-r--r--test/c/initializers.c4
3 files changed, 6 insertions, 0 deletions
diff --git a/cfrontend/Cil2Csyntax.ml b/cfrontend/Cil2Csyntax.ml
index 914f5ca..8538003 100644
--- a/cfrontend/Cil2Csyntax.ml
+++ b/cfrontend/Cil2Csyntax.ml
@@ -158,6 +158,8 @@ and eval_cast ty v =
| TInt(ik, _), CInt64(v, _, _) -> mkint64 ik v
| TInt(ik, _), CReal(v, _, _) ->
if ik = IULongLong then raise NotConst else mkint64 ik (Int64.of_float v)
+ | TEnum _, CInt64(v, _, _) -> mkint64 IInt v
+ | TEnum _, CReal(v, _, _) -> mkint64 IInt (Int64.of_float v)
| TFloat(fk, _), CReal(v, _, _) -> mkfloat fk v
| TFloat(fk, _), CInt64(v, ik, _) ->
if ik = IULongLong then raise NotConst else mkfloat fk (Int64.to_float v)
diff --git a/test/c/Results/initializers b/test/c/Results/initializers
index 7285bb7..a1d91bc 100644
--- a/test/c/Results/initializers
+++ b/test/c/Results/initializers
Binary files differ
diff --git a/test/c/initializers.c b/test/c/initializers.c
index 5fa4fd4..2c52d51 100644
--- a/test/c/initializers.c
+++ b/test/c/initializers.c
@@ -27,6 +27,9 @@ float x11 = 1 + 1 / 3.14159;
double x12 = 1 / 3.14159 + 1;
+typedef enum { AAA , BBB } MyEnum;
+
+const MyEnum x13[2] = { AAA, BBB };
int main(int argc, char ** argv)
{
@@ -50,6 +53,7 @@ int main(int argc, char ** argv)
x10.u.y, x10.u.z, x10.v);
printf("x11 = %.10f\n", x11);
printf("x12 = %.10f\n", x12);
+ printf("x13 = { %d, %d }\n", x13[0], x13[1]);
return 0;
}