[llvm] [NFC][TableGen] Create valid Dag in VarLenCodeEmitter (PR #140283)

Rahul Joshi via llvm-commits llvm-commits at lists.llvm.org
Sat May 17 07:20:18 PDT 2025


https://github.com/jurahul updated https://github.com/llvm/llvm-project/pull/140283

>From 67c98a0a410e7c5edbd449720a54f315f1a2b15b Mon Sep 17 00:00:00 2001
From: Rahul Joshi <rjoshi at nvidia.com>
Date: Fri, 16 May 2025 10:02:52 -0700
Subject: [PATCH] [NFC][TableGen] Create valid Dag in VarLenCodeEmitter

- Set the Dag ArgNames correctly when normalizing the Dag for slice.
---
 llvm/utils/TableGen/Common/VarLenCodeEmitterGen.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/llvm/utils/TableGen/Common/VarLenCodeEmitterGen.cpp b/llvm/utils/TableGen/Common/VarLenCodeEmitterGen.cpp
index 1d172ab6109c1..9de6a585eb4de 100644
--- a/llvm/utils/TableGen/Common/VarLenCodeEmitterGen.cpp
+++ b/llvm/utils/TableGen/Common/VarLenCodeEmitterGen.cpp
@@ -212,10 +212,10 @@ void VarLenInst::buildRec(const DagInit *DI) {
 
     if (NeedSwap) {
       // Normalization: Hi bit should always be the second argument.
-      const Init *const NewArgs[] = {OperandName, LoBit, HiBit};
-      // TODO: This creates an invalid DagInit with 3 Args but 0 ArgNames.
-      // Extend unit test to exercise this and fix it.
-      Segments.push_back({NumBits, DagInit::get(DI->getOperator(), NewArgs, {}),
+      SmallVector<std::pair<const Init *, const StringInit *>> NewArgs(
+          DI->getArgAndNames());
+      std::swap(NewArgs[1], NewArgs[2]);
+      Segments.push_back({NumBits, DagInit::get(DI->getOperator(), NewArgs),
                           CustomEncoder, CustomDecoder});
     } else {
       Segments.push_back({NumBits, DI, CustomEncoder, CustomDecoder});



More information about the llvm-commits mailing list