[llvm] [CodeGen] Avoid ambiguous Register comparison in C++20; NFC (PR #205814)

Sven van Haastregt via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 26 07:10:20 PDT 2026


https://github.com/svenvh updated https://github.com/llvm/llvm-project/pull/205814

>From 8e5a596f5295ddf55d1ac17fe626bed102c351ef Mon Sep 17 00:00:00 2001
From: Sven van Haastregt <sven.vanhaastregt at arm.com>
Date: Thu, 25 Jun 2026 13:13:03 +0100
Subject: [PATCH 1/2] [CodeGen] Avoid ambiguous Register comparison in C++20;
 NFC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Fix an "ambiguous overload for ‘operator==’" error when compiling with
`-std=c++20`, caused by C++20's rewritten operator== candidate rules.
---
 llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index 64b6b27346575..1fb4bac418226 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -691,7 +691,7 @@ static void interpretValues(const MachineInstr *CurMI,
     for (auto FwdRegIt = ForwardedRegWorklist.begin();
          FwdRegIt != ForwardedRegWorklist.end();) {
       Register CalleeSavedReg = MCRegister::NoRegister;
-      if (FwdRegIt->first == CopySrcReg)
+      if (static_cast<Register>(FwdRegIt->first) == CopySrcReg)
         CalleeSavedReg = CopyDestReg;
       else if (unsigned SubRegIdx =
                    TRI.getSubRegIndex(CopySrcReg, FwdRegIt->first))

>From fd138d8f96cde9331c8f4cbaa2df04c3e192f272 Mon Sep 17 00:00:00 2001
From: Sven van Haastregt <sven.vanhaastregt at arm.com>
Date: Fri, 26 Jun 2026 15:08:51 +0100
Subject: [PATCH 2/2] Use Register instead of uint64_t

---
 llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index 1fb4bac418226..4197d53e63d77 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -585,7 +585,7 @@ struct FwdRegParamInfo {
 };
 
 /// Register worklist for finding call site values.
-using FwdRegWorklist = MapVector<uint64_t, SmallVector<FwdRegParamInfo, 2>>;
+using FwdRegWorklist = MapVector<Register, SmallVector<FwdRegParamInfo, 2>>;
 /// Container for the set of register units known to be clobbered on the path
 /// to a call site.
 using ClobberedRegUnitSet = SmallSet<MCRegUnit, 16>;
@@ -691,7 +691,7 @@ static void interpretValues(const MachineInstr *CurMI,
     for (auto FwdRegIt = ForwardedRegWorklist.begin();
          FwdRegIt != ForwardedRegWorklist.end();) {
       Register CalleeSavedReg = MCRegister::NoRegister;
-      if (static_cast<Register>(FwdRegIt->first) == CopySrcReg)
+      if (FwdRegIt->first == CopySrcReg)
         CalleeSavedReg = CopyDestReg;
       else if (unsigned SubRegIdx =
                    TRI.getSubRegIndex(CopySrcReg, FwdRegIt->first))



More information about the llvm-commits mailing list