https://github.com/andykaylor created 
https://github.com/llvm/llvm-project/pull/178760

This fixes a few places where we were using the minus operator with unsigned 
literal values, which was causing C4146 warnings when compiled with MSVC.

This relates to https://github.com/llvm/llvm-project/issues/147439

>From 824a5766ed9944c877ec3a5532389c176fdfdab9 Mon Sep 17 00:00:00 2001
From: Andy Kaylor <[email protected]>
Date: Thu, 29 Jan 2026 13:48:03 -0800
Subject: [PATCH] [CIR][NFC] Replace uses of negative unsigned literals

This fixes a few places where we were using the minus operator with unsigned
literal values, which was causing C4146 warnings when compiled with MSVC.

This relates to https://github.com/llvm/llvm-project/issues/147439
---
 clang/lib/CIR/CodeGen/CIRGenItaniumCXXABI.cpp             | 8 ++++----
 .../Transforms/TargetLowering/LowerItaniumCXXABI.cpp      | 4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/clang/lib/CIR/CodeGen/CIRGenItaniumCXXABI.cpp 
b/clang/lib/CIR/CodeGen/CIRGenItaniumCXXABI.cpp
index 26465a804f1e6..aca2278c3876c 100644
--- a/clang/lib/CIR/CodeGen/CIRGenItaniumCXXABI.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenItaniumCXXABI.cpp
@@ -1923,7 +1923,7 @@ static CharUnits computeOffsetHint(ASTContext &astContext,
   // If Dst is not derived from Src we can skip the whole computation below and
   // return that Src is not a public base of Dst.  Record all inheritance 
paths.
   if (!dst->isDerivedFrom(src, paths))
-    return CharUnits::fromQuantity(-2ULL);
+    return CharUnits::fromQuantity(-2);
 
   unsigned numPublicPaths = 0;
   CharUnits offset;
@@ -1939,7 +1939,7 @@ static CharUnits computeOffsetHint(ASTContext &astContext,
       // If the path contains a virtual base class we can't give any hint.
       // -1: no hint.
       if (pathElement.Base->isVirtual())
-        return CharUnits::fromQuantity(-1ULL);
+        return CharUnits::fromQuantity(-1);
 
       if (numPublicPaths > 1) // Won't use offsets, skip computation.
         continue;
@@ -1954,11 +1954,11 @@ static CharUnits computeOffsetHint(ASTContext 
&astContext,
 
   // -2: Src is not a public base of Dst.
   if (numPublicPaths == 0)
-    return CharUnits::fromQuantity(-2ULL);
+    return CharUnits::fromQuantity(-2);
 
   // -3: Src is a multiple public base type but never a virtual base type.
   if (numPublicPaths > 1)
-    return CharUnits::fromQuantity(-3ULL);
+    return CharUnits::fromQuantity(-3);
 
   // Otherwise, the Src type is a unique public nonvirtual base type of Dst.
   // Return the offset of Src from the origin of Dst.
diff --git 
a/clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerItaniumCXXABI.cpp 
b/clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerItaniumCXXABI.cpp
index 50c481192f16b..de3f0176e8ed4 100644
--- a/clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerItaniumCXXABI.cpp
+++ b/clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerItaniumCXXABI.cpp
@@ -173,11 +173,11 @@ mlir::Type LowerItaniumCXXABI::lowerMethodType(
 mlir::TypedAttr LowerItaniumCXXABI::lowerDataMemberConstant(
     cir::DataMemberAttr attr, const mlir::DataLayout &layout,
     const mlir::TypeConverter &typeConverter) const {
-  uint64_t memberOffset;
+  int64_t memberOffset;
   if (attr.isNullPtr()) {
     // Itanium C++ ABI 2.3:
     //   A NULL pointer is represented as -1.
-    memberOffset = -1ull;
+    memberOffset = -1;
   } else {
     // Itanium C++ ABI 2.3:
     //   A pointer to data member is an offset from the base address of

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to