[cfe-dev] and how does clang control inliner?

林政宗 via cfe-dev cfe-dev at lists.llvm.org
Mon Mar 30 00:29:41 PDT 2020


Hi,


besides unroll, I wonder how clang controls inliner. The inliner computes the Cost and Threshold and makes decision whether to inline.
I modified the OptimizeSize into 100 in CodeGenOptions.def:
-----------------------------------------------------------------------------------------
VALUE_CODEGENOPT(OptimizeSize, 2, 100) ///< If -Os (==1) or -Oz (==2) is specified.

-----------------------------------------------------------------------------------------
the original value is 0. But I found that it doesn't affect the threshold. And even the value of CodeGenOpts.OptimizeSize (BackendUtil.cpp:575) is 0.
How could I control the initial value of threshold of inliner ?  And how could I control the value of CodeGenOpts.OptimizeSize . 
Is it possible to control the initial threshold value by passing arguments or options to clang?


Thanks!
Jerry



















At 2020-03-28 17:39:50, "Michael Kruse" <cfe-dev at meinersbur.de> wrote:
>Am Do., 26. März 2020 um 21:44 Uhr schrieb 林政宗 via cfe-dev
><cfe-dev at lists.llvm.org>:
>> Thanks, I think the option in PassManagerBuilder.cpp controls the loop-unroll pass in llvm. Is there a loop-unroll pass or loop-unroll function in clang that will unroll loops in frontend and the generated llvm IR by clang is the unrolled version? and if there is one, how does clang control it? Thanks in advance. Best regards, Jerry
>
>There is no such "pre-unrolling" in clang. That would be redundant.
>
>clang's -funroll-loops -fno-unroll-loops is translated to the value of
>PassManagerBuilder::DisableUnrollLoops
>
>Loop hints such as `#pragma unroll` is translated to metadata:
>https://llvm.org/docs/LangRef.html#llvm-loop-unroll
>
>Michael
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20200330/c6587b33/attachment-0001.html>


More information about the cfe-dev mailing list