[llvm] [TableGen] Fix non-deterministic output from emitGetRegClassFromMatchKindFunc. (PR #218560)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 24 23:13:12 PDT 2026
https://github.com/topperc updated https://github.com/llvm/llvm-project/pull/218560
>From 2f76a34b51fa2378085c5fd15c80061b9e5a1006 Mon Sep 17 00:00:00 2001
From: Craig Topper <craig.topper at sifive.com>
Date: Mon, 24 Aug 2026 17:30:50 -0700
Subject: [PATCH] [TableGen] Fix non-deterministic output from
emitGetRegClassFromMatchKindFunc.
We were iterating a std::map that uses a pointer for the key which
isn't deterministic.
To fix, dereference the pointer and use operator< from the class.
---
llvm/utils/TableGen/AsmMatcherEmitter.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/llvm/utils/TableGen/AsmMatcherEmitter.cpp b/llvm/utils/TableGen/AsmMatcherEmitter.cpp
index 96188225c472e..5e2127d139081 100644
--- a/llvm/utils/TableGen/AsmMatcherEmitter.cpp
+++ b/llvm/utils/TableGen/AsmMatcherEmitter.cpp
@@ -2578,7 +2578,8 @@ static void emitGetRegClassFromMatchKindFunc(AsmMatcherInfo &Info,
// it for all non-ambiguous RegisterOperands.
// Many targets reuse the same ParserMatchClass for different register
// classes so we can't emit a these unconditionally.
- std::map<const ClassInfo *, const ClassInfo *> UserClassToRegClassMap;
+ std::map<const ClassInfo *, const ClassInfo *, deref<std::less<>>>
+ UserClassToRegClassMap;
for (const Record *RO :
Info.Records.getAllDerivedDefinitions("RegisterOperand")) {
const RecordVal *R = RO->getValue("ParserMatchClass");
More information about the llvm-commits
mailing list