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 <[email protected]> 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 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
