diff options
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/CodeGen/CodeGenPGO.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/clang/lib/CodeGen/CodeGenPGO.cpp b/clang/lib/CodeGen/CodeGenPGO.cpp index 5b8e3427136..e5993f51e4d 100644 --- a/clang/lib/CodeGen/CodeGenPGO.cpp +++ b/clang/lib/CodeGen/CodeGenPGO.cpp @@ -757,10 +757,10 @@ void CodeGenPGO::valueProfile(CGBuilderTy &Builder, uint32_t ValueKind, bool InstrumentValueSites = CGM.getCodeGenOpts().hasProfileClangInstr(); if (InstrumentValueSites && RegionCounterMap) { - llvm::LLVMContext &Ctx = CGM.getLLVMContext(); - auto *I8PtrTy = llvm::Type::getInt8PtrTy(Ctx); + auto BuilderInsertPoint = Builder.saveIP(); + Builder.SetInsertPoint(ValueSite); llvm::Value *Args[5] = { - llvm::ConstantExpr::getBitCast(FuncNameVar, I8PtrTy), + llvm::ConstantExpr::getBitCast(FuncNameVar, Builder.getInt8PtrTy()), Builder.getInt64(FunctionHash), Builder.CreatePtrToInt(ValuePtr, Builder.getInt64Ty()), Builder.getInt32(ValueKind), @@ -768,6 +768,7 @@ void CodeGenPGO::valueProfile(CGBuilderTy &Builder, uint32_t ValueKind, }; Builder.CreateCall( CGM.getIntrinsic(llvm::Intrinsic::instrprof_value_profile), Args); + Builder.restoreIP(BuilderInsertPoint); return; } |