Skip to content

Commit 9f5a670

Browse files
authored
[TableGen] !subst on a dag should retain name of operator (#141195)
Without this patch the !subst in the test drops the name "$frag" from (one_frag:$frag ...) and returns: ``` (set FPR32_NEW:$dst, (one_frag FPR32_NEW:$a, FPR32_NEW:$b)) ```
1 parent afd3133 commit 9f5a670

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

llvm/lib/TableGen/Record.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1688,7 +1688,7 @@ static const Init *ForeachDagApply(const Init *LHS, const DagInit *MHSd,
16881688
}
16891689

16901690
if (Change)
1691-
return DagInit::get(Val, NewArgs);
1691+
return DagInit::get(Val, MHSd->getName(), NewArgs);
16921692
return MHSd;
16931693
}
16941694

llvm/test/TableGen/dag-subst.td

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// RUN: llvm-tblgen %s | FileCheck %s
2+
3+
// Operator name "frg" in one_frag:$frg was not retained during !subst.
4+
5+
def one_frag;
6+
def FPR32;
7+
def ops;
8+
def node;
9+
def GPR;
10+
def cond;
11+
def set;
12+
def FPR32_NEW;
13+
def a {
14+
dag d = (set FPR32:$dst, (one_frag:$frg FPR32:$a, FPR32:$b));
15+
dag n = !foreach(i, d, !subst(FPR32, FPR32_NEW, i));
16+
}
17+
18+
// CHECK: dag n = (set FPR32_NEW:$dst, (one_frag:$frg FPR32_NEW:$a, FPR32_NEW:$b));

0 commit comments

Comments
 (0)