diff --git a/llvm/unittests/Transforms/IPO/FunctionSpecializationTest.cpp b/llvm/unittests/Transforms/IPO/FunctionSpecializationTest.cpp --- a/llvm/unittests/Transforms/IPO/FunctionSpecializationTest.cpp +++ b/llvm/unittests/Transforms/IPO/FunctionSpecializationTest.cpp @@ -23,6 +23,19 @@ namespace llvm { +static void removeSSACopy(Function &F) { + for (BasicBlock &BB : F) { + for (Instruction &Inst : llvm::make_early_inc_range(BB)) { + if (auto *II = dyn_cast(&Inst)) { + if (II->getIntrinsicID() != Intrinsic::ssa_copy) + continue; + Inst.replaceAllUsesWith(II->getOperand(0)); + Inst.eraseFromParent(); + } + } + } +} + class FunctionSpecializationTest : public testing::Test { protected: LLVMContext Ctx; @@ -77,6 +90,8 @@ Solver->markOverdefined(&Arg); Solver->solveWhileResolvedUndefsIn(*M); + removeSSACopy(*F); + return FunctionSpecializer(*Solver, *M, &FAM, GetBFI, GetTLI, GetTTI, GetAC); }