diff --git a/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp b/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp --- a/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp +++ b/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp @@ -529,10 +529,11 @@ if (NeedsRuntimeHook) MadeChange = emitRuntimeHook(); - // Improve compile time by avoiding linear scans when there is no work. + bool ContainsProfiling = containsProfilingIntrinsics(M); GlobalVariable *CoverageNamesVar = M.getNamedGlobal(getCoverageUnusedNamesVarName()); - if (!containsProfilingIntrinsics(M) && !CoverageNamesVar) + // Improve compile time by avoiding linear scans when there is no work. + if (!ContainsProfiling && !CoverageNamesVar) return MadeChange; // We did not know how many value sites there would be inside @@ -571,7 +572,7 @@ // require pulling in profile runtime, and coverage is enabled on code that is // not eliminated by the front-end, e.g. unused functions with internal // linkage. - if (!NeedsRuntimeHook && containsProfilingIntrinsics(M)) + if (!NeedsRuntimeHook && ContainsProfiling) emitRuntimeHook(); emitRegistration();