From e0e4b5d5bd57f9dc47f54866c6cd04d8cea7eba1 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Mon, 9 Dec 2024 17:32:25 -0800 Subject: [PATCH] [GISel] Avoid creating a virtual register we don't need. narrowScalarAddSub was creating a virtual register and then overwriting the Register variable without using it. Add an else and only create it when needed. --- llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp index cf835ad187f81..5bfeee05a19c0 100644 --- a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp +++ b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp @@ -6406,10 +6406,12 @@ LegalizerHelper::narrowScalarAddSub(MachineInstr &MI, unsigned TypeIdx, for (int i = 0, e = Src1Regs.size(); i != e; ++i) { Register DstReg = MRI.createGenericVirtualRegister(MRI.getType(Src1Regs[i])); - Register CarryOut = MRI.createGenericVirtualRegister(LLT::scalar(1)); + Register CarryOut; // Forward the final carry-out to the destination register if (i == e - 1 && CarryDst) CarryOut = CarryDst; + else + CarryOut = MRI.createGenericVirtualRegister(LLT::scalar(1)); if (!CarryIn) { MIRBuilder.buildInstr(OpO, {DstReg, CarryOut},