[llvm-branch-commits] [llvm] [amdgpu-cfi: 9/9]: [AMDGPU][MC] Replace shifted registers in CFI instructions (PR #183147)
Scott Linder via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Thu May 14 14:00:08 PDT 2026
================
@@ -1302,6 +1302,39 @@ void MCGenDwarfLabelEntry::Make(MCSymbol *Symbol, MCStreamer *MCOS,
MCGenDwarfLabelEntry(Name, FileNumber, LineNumber, Label));
}
+void MCCFIInstruction::replaceRegister(unsigned FromReg, unsigned ToReg) {
+ auto ReplaceReg = [=](unsigned &Reg) {
+ if (Reg == FromReg)
+ Reg = ToReg;
+ };
+ auto Visitor = makeVisitor(
+ [=](CommonFields &F) {
+ ReplaceReg(F.Register);
+ ReplaceReg(F.Register2);
+ },
+ [](EscapeFields &) {}, [](LabelFields &) {},
+ [=](RegisterPairFields &F) {
+ ReplaceReg(F.Register);
+ ReplaceReg(F.Reg1);
+ ReplaceReg(F.Reg2);
+ },
+ [=](VectorRegistersFields &F) {
+ ReplaceReg(F.Register);
+ for (VectorRegisterWithLane &VRL : F.VectorRegisters)
+ ReplaceReg(VRL.Register);
+ },
+ [=](VectorOffsetFields &F) {
+ ReplaceReg(F.Register);
+ ReplaceReg(F.MaskRegister);
+ },
+ [=](VectorRegisterMaskFields &F) {
+ ReplaceReg(F.Register);
+ ReplaceReg(F.SpillRegister);
+ ReplaceReg(F.MaskRegister);
+ });
+ std::visit(Visitor, ExtraFields);
----------------
slinder1 wrote:
Makes sense, `std::variant`+`std::visit` isn't great, but it is what we got.
https://github.com/llvm/llvm-project/pull/183147
More information about the llvm-branch-commits
mailing list