Index: include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h =================================================================== --- include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h +++ include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h @@ -76,6 +76,13 @@ return MIB->getOperand(0).getReg(); } + void buildSources(MachineInstrBuilder &MIB) { } + template + void buildSources(MachineInstrBuilder &MIB, UseArgsTy &&... Args) { + unsigned It[] = {(getRegFromArg(Args))...}; + for (const auto &i : It) + MIB.addUse(i); + } public: /// Getter for the function we currently build. MachineFunction &getMF() { @@ -146,9 +153,7 @@ MachineInstrBuilder buildInstr(unsigned Opc, DstTy &&Ty, UseArgsTy &&... Args) { auto MIB = buildInstr(Opc).addDef(getDestFromArg(Ty)); - unsigned It[] = {(getRegFromArg(Args))...}; - for (const auto &i : It) - MIB.addUse(i); + buildSources(MIB, std::forward(Args)...); return MIB; }