[llvm] r323574 - [InstrProfiling] Improve compile time when there is no work
Davide Italiano via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 26 16:52:41 PST 2018
This is good. Do you happen to have numbers for my own intellectual
curiosity? (and for the archives)
On Fri, Jan 26, 2018 at 3:54 PM, Vedant Kumar via llvm-commits
<llvm-commits at lists.llvm.org> wrote:
> Author: vedantk
> Date: Fri Jan 26 15:54:24 2018
> New Revision: 323574
>
> URL: http://llvm.org/viewvc/llvm-project?rev=323574&view=rev
> Log:
> [InstrProfiling] Improve compile time when there is no work
>
> When there are no uses of profiling intrinsics in a module, and there's
> no coverage data to lower, InstrProfiling has no work to do.
>
> Modified:
> llvm/trunk/lib/Transforms/Instrumentation/InstrProfiling.cpp
>
> Modified: llvm/trunk/lib/Transforms/Instrumentation/InstrProfiling.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/InstrProfiling.cpp?rev=323574&r1=323573&r2=323574&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Transforms/Instrumentation/InstrProfiling.cpp (original)
> +++ llvm/trunk/lib/Transforms/Instrumentation/InstrProfiling.cpp Fri Jan 26 15:54:24 2018
> @@ -430,7 +430,27 @@ void InstrProfiling::promoteCounterLoadS
> }
> }
>
> +/// Check if the module contains uses of any profiling intrinsics.
> +static bool containsProfilingIntrinsics(Module &M) {
> + if (auto *F = M.getFunction(
> + Intrinsic::getName(llvm::Intrinsic::instrprof_increment)))
> + return !F->use_empty();
> + if (auto *F = M.getFunction(
> + Intrinsic::getName(llvm::Intrinsic::instrprof_increment_step)))
> + return !F->use_empty();
> + if (auto *F = M.getFunction(
> + Intrinsic::getName(llvm::Intrinsic::instrprof_value_profile)))
> + return !F->use_empty();
> + return false;
> +}
> +
> bool InstrProfiling::run(Module &M, const TargetLibraryInfo &TLI) {
> + // Improve compile time by avoiding linear scans when there is no work.
> + GlobalVariable *CoverageNamesVar =
> + M.getNamedGlobal(getCoverageUnusedNamesVarName());
> + if (!containsProfilingIntrinsics(M) && !CoverageNamesVar)
> + return false;
> +
> bool MadeChange = false;
>
> this->M = &M;
> @@ -464,8 +484,7 @@ bool InstrProfiling::run(Module &M, cons
> for (Function &F : M)
> MadeChange |= lowerIntrinsics(&F);
>
> - if (GlobalVariable *CoverageNamesVar =
> - M.getNamedGlobal(getCoverageUnusedNamesVarName())) {
> + if (CoverageNamesVar) {
> lowerCoverageData(CoverageNamesVar);
> MadeChange = true;
> }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
--
Davide
"There are no solved problems; there are only problems that are more
or less solved" -- Henri Poincare
More information about the llvm-commits
mailing list