[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))
```
This commit is contained in:
Adam Nemet 2025-05-23 12:03:56 -07:00 committed by GitHub
parent afd3133945
commit 9f5a670297
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 19 additions and 1 deletions

View File

@ -1688,7 +1688,7 @@ static const Init *ForeachDagApply(const Init *LHS, const DagInit *MHSd,
}
if (Change)
return DagInit::get(Val, NewArgs);
return DagInit::get(Val, MHSd->getName(), NewArgs);
return MHSd;
}

View File

@ -0,0 +1,18 @@
// RUN: llvm-tblgen %s | FileCheck %s
// Operator name "frg" in one_frag:$frg was not retained during !subst.
def one_frag;
def FPR32;
def ops;
def node;
def GPR;
def cond;
def set;
def FPR32_NEW;
def a {
dag d = (set FPR32:$dst, (one_frag:$frg FPR32:$a, FPR32:$b));
dag n = !foreach(i, d, !subst(FPR32, FPR32_NEW, i));
}
// CHECK: dag n = (set FPR32_NEW:$dst, (one_frag:$frg FPR32_NEW:$a, FPR32_NEW:$b));