diff options
| author | Wei Mi <wmi@google.com> | 2019-02-21 02:57:52 +0000 |
|---|---|---|
| committer | Wei Mi <wmi@google.com> | 2019-02-21 02:57:52 +0000 |
| commit | 500606f270ffcbdc199ee581fb2147700a7bb139 (patch) | |
| tree | 3fe075e7d473dbe207be4db9035af34f90ab04d6 /llvm/lib/Transforms/IPO/Inliner.cpp | |
| parent | 2d84c00dfa536e813555da9c7555c1ce5ea52c06 (diff) | |
| download | bcm5719-llvm-500606f270ffcbdc199ee581fb2147700a7bb139.tar.gz bcm5719-llvm-500606f270ffcbdc199ee581fb2147700a7bb139.zip | |
[Inliner] Pass nullptr for the ORE param of getInlineCost if RemarkEnabled
is false.
Right now for inliner and partial inliner, we always pass the address of a
valid ORE object to getInlineCost even if RemarkEnabled is false because of
no -Rpass is specified. Since ComputeFullInlineCost will be set to true if
ORE is non-null in getInlineCost, this introduces the problem that in
getInlineCost we cannot return early even if we already know the cost is
definitely higher than the threshold. It is a general problem for compile
time.
This patch fixes that by pass nullptr as the ORE argument if RemarkEnabled is
false.
Differential Revision: https://reviews.llvm.org/D58399
llvm-svn: 354542
Diffstat (limited to 'llvm/lib/Transforms/IPO/Inliner.cpp')
| -rw-r--r-- | llvm/lib/Transforms/IPO/Inliner.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/IPO/Inliner.cpp b/llvm/lib/Transforms/IPO/Inliner.cpp index d50592d829c..8ea6d154be5 100644 --- a/llvm/lib/Transforms/IPO/Inliner.cpp +++ b/llvm/lib/Transforms/IPO/Inliner.cpp @@ -1005,8 +1005,11 @@ PreservedAnalyses InlinerPass::run(LazyCallGraph::SCC &InitialC, auto GetInlineCost = [&](CallSite CS) { Function &Callee = *CS.getCalledFunction(); auto &CalleeTTI = FAM.getResult<TargetIRAnalysis>(Callee); + bool RemarksEnabled = + Callee.getContext().getDiagHandlerPtr()->isMissedOptRemarkEnabled( + DEBUG_TYPE); return getInlineCost(CS, Params, CalleeTTI, GetAssumptionCache, {GetBFI}, - PSI, &ORE); + PSI, RemarksEnabled ? &ORE : nullptr); }; // Now process as many calls as we have within this caller in the sequnece. |

