diff --git a/llvm/lib/Transforms/Utils/EntryExitInstrumenter.cpp b/llvm/lib/Transforms/Utils/EntryExitInstrumenter.cpp index bdcd3d4cc0496586092375089d3b9d5f35e0204e..064d7d003a92c4c99be78a942254829ce8d489be 100644 --- a/llvm/lib/Transforms/Utils/EntryExitInstrumenter.cpp +++ b/llvm/lib/Transforms/Utils/EntryExitInstrumenter.cpp @@ -29,7 +29,8 @@ static void insertCall(Function &CurFn, StringRef Func, Func == "\01_mcount" || Func == "\01mcount" || Func == "__mcount" || - Func == "_mcount") { + Func == "_mcount" || + Func == "__cyg_profile_func_enter_bare") { Constant *Fn = M.getOrInsertFunction(Func, Type::getVoidTy(C)); CallInst::Create(Fn, "", InsertionPt); return; diff --git a/llvm/test/Transforms/CountingFunctionInserter/mcount.ll b/llvm/test/Transforms/CountingFunctionInserter/mcount.ll index 6d9aaab18c6834d6bec43bef5efef2c02759080f..50e6b1321bbe37435ec3fa030694d18f797a7c13 100644 --- a/llvm/test/Transforms/CountingFunctionInserter/mcount.ll +++ b/llvm/test/Transforms/CountingFunctionInserter/mcount.ll @@ -73,6 +73,10 @@ define void @f6() #6 { entry: ret void } ; CHECK-LABEL: define void @f6 ; CHECK: call void @_mcount +define void @f7() #7 { entry: ret void } +; CHECK-LABEL: define void @f7 +; CHECK: call void @__cyg_profile_func_enter_bare + ; The attributes are "consumed" when the instrumentation is inserted. ; CHECK: attributes @@ -84,3 +88,4 @@ attributes #3 = { "instrument-function-entry-inlined"="\01_mcount" } attributes #4 = { "instrument-function-entry-inlined"="\01mcount" } attributes #5 = { "instrument-function-entry-inlined"="__mcount" } attributes #6 = { "instrument-function-entry-inlined"="_mcount" } +attributes #7 = { "instrument-function-entry-inlined"="__cyg_profile_func_enter_bare" }