[llvm] [NFC] Fix MSVC C4146 warnings in LLVM CodeGen and tools (PR #225580)

Younes Yazami via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 22 20:08:06 PDT 2026


https://github.com/yelidris-public created https://github.com/llvm/llvm-project/pull/225580

Fix remaining MSVC C4146 (unary minus applied to unsigned type) warnings

>From 0dbc72cc296a959482fb4337155b181dda215b64 Mon Sep 17 00:00:00 2001
From: yelidris <younes.elidrissiyazami at amd.com>
Date: Tue, 22 Sep 2026 23:04:48 -0400
Subject: [PATCH] [NFC] Fix MSVC C4146 warnings in LLVM CodeGen and tools

Fix remaining MSVC C4146 (unary minus applied to unsigned type)
warnings
---
 llvm/include/llvm/CodeGen/BasicTTIImpl.h                   | 2 +-
 llvm/include/llvm/CodeGen/CallingConvLower.h               | 2 +-
 llvm/include/llvm/CodeGen/SelectionDAGNodes.h              | 2 +-
 llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h | 2 +-
 llvm/lib/ExecutionEngine/Orc/MachOPlatform.cpp             | 2 +-
 llvm/tools/llvm-reduce/ReducerWorkItem.cpp                 | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/llvm/include/llvm/CodeGen/BasicTTIImpl.h b/llvm/include/llvm/CodeGen/BasicTTIImpl.h
index 39915d4d8eec3e..0777861e203d4b 100644
--- a/llvm/include/llvm/CodeGen/BasicTTIImpl.h
+++ b/llvm/include/llvm/CodeGen/BasicTTIImpl.h
@@ -2082,7 +2082,7 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
       return thisT()->getShuffleCost(
           TTI::SK_Splice, cast<VectorType>(RetTy),
           cast<VectorType>(Args[0]->getType()), CostKind, {},
-          IID == Intrinsic::vector_splice_left ? Index : -Index,
+          IID == Intrinsic::vector_splice_left ? static_cast<int>(Index) : -static_cast<int>(Index),
           cast<VectorType>(RetTy));
     }
     case Intrinsic::vector_reduce_add:
diff --git a/llvm/include/llvm/CodeGen/CallingConvLower.h b/llvm/include/llvm/CodeGen/CallingConvLower.h
index 45703744efe3a9..1af0982a6b5115 100644
--- a/llvm/include/llvm/CodeGen/CallingConvLower.h
+++ b/llvm/include/llvm/CodeGen/CallingConvLower.h
@@ -409,7 +409,7 @@ class CCState {
     int64_t Offset;
     if (NegativeOffsets) {
       StackSize = alignTo(StackSize + Size, Alignment);
-      Offset = -StackSize;
+      Offset = -static_cast<int64_t>(StackSize);
     } else {
       Offset = alignTo(StackSize, Alignment);
       StackSize = Offset + Size;
diff --git a/llvm/include/llvm/CodeGen/SelectionDAGNodes.h b/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
index 667c98f086827a..b4d84546958c39 100644
--- a/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
+++ b/llvm/include/llvm/CodeGen/SelectionDAGNodes.h
@@ -1277,7 +1277,7 @@ inline SDValue::SDValue(SDNode *node, unsigned resno)
   // combines.
   assert((!Node || !ResNo || ResNo < Node->getNumValues()) &&
          "Invalid result number for the given node!");
-  assert(ResNo < -2U && "Cannot use result numbers reserved for DenseMaps.");
+  assert(ResNo < ~1U && "Cannot use result numbers reserved for DenseMaps.");
 }
 
 inline unsigned SDValue::getOpcode() const {
diff --git a/llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h b/llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h
index c70c84315963f6..7e04e4125572f7 100644
--- a/llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h
+++ b/llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h
@@ -119,7 +119,7 @@ class DeadArgumentEliminationPass
 private:
   Liveness markIfNotLive(RetOrArg Use, UseVector &MaybeLiveUses);
   Liveness surveyUse(const Use *U, UseVector &MaybeLiveUses,
-                     unsigned RetValNum = -1U);
+                     unsigned RetValNum = ~0u);
   Liveness surveyUses(const Value *V, UseVector &MaybeLiveUses);
 
   void surveyFunction(const Function &F);
diff --git a/llvm/lib/ExecutionEngine/Orc/MachOPlatform.cpp b/llvm/lib/ExecutionEngine/Orc/MachOPlatform.cpp
index 2e9fa50d7cff7d..3f243073a421a3 100644
--- a/llvm/lib/ExecutionEngine/Orc/MachOPlatform.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/MachOPlatform.cpp
@@ -1581,7 +1581,7 @@ Error MachOPlatform::MachOPlatformPlugin::populateObjCRuntimeObject(
 
       SecBlock.addEdge(PointerEdge,
                        RecordOffset + ((char *)&SD.Sec.addr - (char *)&SD.Sec),
-                       *ObjCImageInfoSym, -SecBlock.getAddress().getValue());
+                       *ObjCImageInfoSym, - static_cast<int64_t>(SecBlock.getAddress().getValue()));
     };
   }
 
diff --git a/llvm/tools/llvm-reduce/ReducerWorkItem.cpp b/llvm/tools/llvm-reduce/ReducerWorkItem.cpp
index 6b202aec3e8f85..f274f6ba94c2dc 100644
--- a/llvm/tools/llvm-reduce/ReducerWorkItem.cpp
+++ b/llvm/tools/llvm-reduce/ReducerWorkItem.cpp
@@ -148,7 +148,7 @@ static void cloneFrameInfo(
 
   // Copy the fixed frame objects backwards to preserve frame index numbers,
   // since CreateFixedObject uses front insertion.
-  for (int i = -1; i >= (int)-SrcMFI.getNumFixedObjects(); --i) {
+  for (int i = -1; i >= -static_cast<int>(SrcMFI.getNumFixedObjects()); --i) {
     assert(SrcMFI.isFixedObjectIndex(i));
     int NewFI = DstMFI.CreateFixedObject(
       SrcMFI.getObjectSize(i), SrcMFI.getObjectOffset(i),



More information about the llvm-commits mailing list