[llvm] r311371 - [InlineCost] Add cl::opt to allow full inline cost to be computed for debugging purposes.
Adam Nemet via llvm-commits
llvm-commits at lists.llvm.org
Sat Aug 26 17:22:50 PDT 2017
> On Aug 26, 2017, at 3:20 PM, Davide Italiano <davide at freebsd.org> wrote:
>
> On Sat, Aug 26, 2017 at 3:00 PM, Davide Italiano <davide at freebsd.org <mailto:davide at freebsd.org>> wrote:
>> On Fri, Aug 25, 2017 at 6:25 PM, Adam Nemet <anemet at apple.com> wrote:
>>>
>>> On Aug 25, 2017, at 1:11 PM, Davide Italiano <davide at freebsd.org> wrote:
>>>
>>> On Mon, Aug 21, 2017 at 1:00 PM, Haicheng Wu via llvm-commits
>>> <llvm-commits at lists.llvm.org> wrote:
>>>
>>> Author: haicheng
>>> Date: Mon Aug 21 13:00:09 2017
>>> New Revision: 311371
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=311371&view=rev
>>> Log:
>>> [InlineCost] Add cl::opt to allow full inline cost to be computed for
>>> debugging purposes.
>>>
>>> Currently, the inline cost model will bail once the inline cost exceeds the
>>> inline threshold in order to avoid unnecessary compile-time. However, when
>>> debugging it is useful to compute the full cost, so this command line option
>>> is added to override the default behavior.
>>>
>>> I took over this work from Chad Rosier (mcrosier at codeaurora.org).
>>>
>>>
>>> This causes a non-linear increase in the time spent in the inliner for
>>> us, even with optimization remarks disabled.
>>> real 0m2.889s
>>> vs
>>> real 0m30.429s
>>>
>>> I'm under the impression the issue is that for the legacy pass manager
>>> we create an ORE object on-the-fly (as the inliner is a CGSCC pass,
>>> and ORE is a FunctionPass analysis), so ORE is always non-null and we
>>> compute the inlineCost in every case. For the new PM, we can rely on
>>> proxying, but in the current infrastructure I'm not aware of an easy
>>> way of obtaining function passes from outer units of IR.
>>> Adam/Chandler, thoughts?
>>>
>>>
>>> Hi Davide,
>>>
>>> Sorry about the delay. ORE is always set irrespective of whether remarks
>>> are enabled or not regardless whether you use old or new PM.
>>>
>>>
>>> If nothing comes up, I'm going to pass null instead of ORE in
>>> InlineSimple to recover from the hit (the feature will be still
>>> available in the new PM, where we have a much better infrastructure
>>> for the purpose).
>>>
>>>
>>> I think that this interface is unfortunate conditionalizing on ORE to emit
>>> remarks.
>>>
>>> Also the solution you used from WholeProgDevirt doesn't unfortunately work,
>>> see https://bugs.llvm.org/show_bug.cgi?id=32352 but it’s OK in the short
>>> term.
>>>
>>> Vivek has been working on the actual solution for this to correctly define
>>> OptimizationRemarkEmitter::allowExtraAnalysis. Vivek, do you think you can
>>> get to it soonish? The API is currently very confusing and I’d like to do
>>> something about it.
>>>
>>> Thanks,
>>> Adam
>>>
>>>
>>
>> Thanks for your reply, Adam.
>> I'm going to disable the feature until the API is fleshed out.
>>
>
> Nevermind, ignore my previous reply. What I meant is that I'll leave
> my workaround in place until the API is fleshed out.
OK :).
>
> Thanks,
>
> --
> Davide
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170826/35cce9cd/attachment.html>
More information about the llvm-commits
mailing list