From 03b66079536b70074b817fa1c3242bce49464450 Mon Sep 17 00:00:00 2001
From: Virgile Prevosto <virgile.prevosto@m4x.org>
Date: Mon, 4 Apr 2022 15:27:04 +0200
Subject: [PATCH] [clang2ir] Fix translation of negative integral constants

and remove useless declaration
---
 ClangVisitor.cpp                   | 3 +--
 tests/basic/oracle/init.res.oracle | 4 ++--
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/ClangVisitor.cpp b/ClangVisitor.cpp
index 67b95110..e58334e4 100644
--- a/ClangVisitor.cpp
+++ b/ClangVisitor.cpp
@@ -9169,8 +9169,7 @@ bool FramacVisitor::VisitVarDecl(clang::VarDecl* Decl) {
         clang::APValue* resultingValue = Decl->evaluateValue();
         if (resultingValue) {
           constantType = Decl->hasExternalStorage()?ICEXTERNCONST:ICSTATICCONST;
-          clang::APValue* resultingValue = Decl->evaluateValue();
-          value=(int64_t) resultingValue->getInt().getLimitedValue(UINT64_MAX);
+          value = resultingValue->getInt().getExtValue();
         }
       };
     };
diff --git a/tests/basic/oracle/init.res.oracle b/tests/basic/oracle/init.res.oracle
index 73e0ee39..45b89a05 100644
--- a/tests/basic/oracle/init.res.oracle
+++ b/tests/basic/oracle/init.res.oracle
@@ -46,8 +46,8 @@ struct _frama_c_rtti_name_info_node _frama_c_rtti_name_info =
    .number_of_base_classes = 0,
    .pvmt = (struct _frama_c_vmt *)0};
 myStruct s = {.a = {(char)0}};
-static int const I = (int)4294967295;
-static long const L = (long)4294967295;
+static int const I = -1;
+static long const L = (long)(-1);
 static long long const LL = (long long)(-1);
 int main(void)
 {
-- 
GitLab