[clang] [Clang][CIR] Replace -1ULL with std::numeric_limits in Itanium CXXABI (PR #178225)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 27 07:07:26 PST 2026
https://github.com/Devanshi-cmd created https://github.com/llvm/llvm-project/pull/178225
Replace instances of -1ULL with std::numeric_limits<uint64_t>::max() in CIR Itanium C++ ABI implementations to address C4146 compiler warning.
This change improves code clarity and eliminates MSVC warning C4146 (unary minus operator applied to unsigned type) in the experimental Clang IR (CIR) implementations.
Files changed:
- clang/lib/CIR/CodeGen/CIRGenItaniumCXXABI.cpp
- clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerItaniumCXXABI.cpp
Fixes part of #147439
>From b35bb1ad82e5cd5fb1844ca62435c3d832b91da5 Mon Sep 17 00:00:00 2001
From: Devanshi-cmd <devanshitiwari250 at gmail.com>
Date: Tue, 27 Jan 2026 20:33:57 +0530
Subject: [PATCH] [Clang][CIR] Replace -1ULL with std::numeric_limits in
Itanium CXXABI
Replace instances of -1ULL with std::numeric_limits<uint64_t>::max()
in CIR Itanium C++ ABI implementations to address C4146 compiler warning.
This change improves code clarity and eliminates MSVC warning C4146
(unary minus operator applied to unsigned type) in the experimental
Clang IR (CIR) implementations.
Files changed:
- clang/lib/CIR/CodeGen/CIRGenItaniumCXXABI.cpp
- clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerItaniumCXXABI.cpp
Fixes part of #147439
---
clang/lib/CIR/CodeGen/CIRGenItaniumCXXABI.cpp | 4 +++-
.../Dialect/Transforms/TargetLowering/LowerItaniumCXXABI.cpp | 4 +++-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/clang/lib/CIR/CodeGen/CIRGenItaniumCXXABI.cpp b/clang/lib/CIR/CodeGen/CIRGenItaniumCXXABI.cpp
index 26465a804f1e6..e61e0390ee86d 100644
--- a/clang/lib/CIR/CodeGen/CIRGenItaniumCXXABI.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenItaniumCXXABI.cpp
@@ -26,6 +26,8 @@
#include "clang/CIR/MissingFeatures.h"
#include "llvm/Support/ErrorHandling.h"
+#include <limits>
+
using namespace clang;
using namespace clang::CIRGen;
@@ -1939,7 +1941,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( std::numeric_limits<uint64_t>::max());
if (numPublicPaths > 1) // Won't use offsets, skip computation.
continue;
diff --git a/clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerItaniumCXXABI.cpp b/clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerItaniumCXXABI.cpp
index 10996e6b5fe29..c9d59539d55d6 100644
--- a/clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerItaniumCXXABI.cpp
+++ b/clang/lib/CIR/Dialect/Transforms/TargetLowering/LowerItaniumCXXABI.cpp
@@ -26,6 +26,8 @@
#include "mlir/IR/ImplicitLocOpBuilder.h"
#include "llvm/Support/ErrorHandling.h"
+#include <limits>
+
namespace cir {
namespace {
@@ -170,7 +172,7 @@ mlir::TypedAttr LowerItaniumCXXABI::lowerDataMemberConstant(
if (attr.isNullPtr()) {
// Itanium C++ ABI 2.3:
// A NULL pointer is represented as -1.
- memberOffset = -1ull;
+ memberOffset = std::numeric_limits<uint64_t>::max();
} else {
// Itanium C++ ABI 2.3:
// A pointer to data member is an offset from the base address of
More information about the cfe-commits
mailing list