diff --git a/src/kernel_internals/typing/cabs2cil.ml b/src/kernel_internals/typing/cabs2cil.ml
index 4bc7199b1bedb2b59684124bda7553ac9e29bffc..abb0e06bdcd170a45fd0b8945af02f66dfa32c1c 100644
--- a/src/kernel_internals/typing/cabs2cil.ml
+++ b/src/kernel_internals/typing/cabs2cil.ml
@@ -1425,7 +1425,7 @@ let rec isConstTrueFalse c: [ `CTrue | `CFalse ] =
   | CReal(f, _, _) ->
     if f = 0.0 then `CFalse else `CTrue
   | CEnum {eival = e} ->
-    match isExpTrueFalse e with
+    match isExpTrueFalse (Cil.constFold true e) with
     | `CTrue | `CFalse as r -> r
     | `CUnknown -> Kernel.fatal ~current:true "Non-constant enum"
 (* Evaluate expressions to `CTrue, `CFalse or `CUnknown *)
diff --git a/tests/syntax/enum1.c b/tests/syntax/enum1.c
index 74487342a08ae8ec1c9ce9187d903670247f8a2e..869661328786046e9294df659a1685eb4f2fff43 100644
--- a/tests/syntax/enum1.c
+++ b/tests/syntax/enum1.c
@@ -28,3 +28,9 @@ enum Foo { EN1, EN2, EN3 };
 int f() { return !EN1; }
 
 int g() { return EN1; }
+
+enum Bar { CONST_ENUM = 1 == 2 };
+
+int h() {
+  return CONST_ENUM ? 0 : 1;
+}
diff --git a/tests/syntax/oracle/enum1.res.oracle b/tests/syntax/oracle/enum1.res.oracle
index 73766d556e65a6db1589a45abca908fd72e4e2c0..b0fc1e66898644fa10f76ebccda12d9ec25b6f8b 100644
--- a/tests/syntax/oracle/enum1.res.oracle
+++ b/tests/syntax/oracle/enum1.res.oracle
@@ -67,6 +67,13 @@ int g(void)
   return __retres;
 }
 
+int h(void)
+{
+  int __retres;
+  __retres = 1;
+  return __retres;
+}
+
 int e2(void)
 {
   int __retres;