[llvm-commits] [PATCH] A fix for the inliner heuristics for recessive calls

Nadav Rotem nrotem at apple.com
Sun Sep 16 10:30:20 PDT 2012


Make sense. I will do that. 

Thanks.

On Sep 16, 2012, at 4:20 PM, Hal Finkel <hfinkel at anl.gov> wrote:

> On Sun, 16 Sep 2012 15:58:10 +0300
> Nadav Rotem <nrotem at apple.com> wrote:
> 
>> Hi Hal, 
>> 
>> Because TargetData may not always be available. If TD is unavailable
>> we have no way of knowing the size of arrays of pointers. 
> 
> True, but if that's the case, then make a conservative guess (say 64
> bits), or don't perform the check at all. I would not otherwise base any
> design decisions on the possible lack of TargetData.
> 
> -Hal
> 
>> 
>> Thanks
>> 
>> On Sep 16, 2012, at 3:44 PM, Hal Finkel <hfinkel at anl.gov> wrote:
>> 
>>> Nadav,
>>> 
>>>> +// Do not inline array allocas with more than this many intems
>>>> into recursive +// function calls.
>>>> +const int RecursiveArrayAllocThreshold = 128;
>>> 
>>> Why is this in items and not in bytes?
>>> 
>>> -Hal
>>> 
>>> On Sun, 16 Sep 2012 15:16:43 +0300
>>> Nadav Rotem <nrotem at apple.com> wrote:
>>> 
>>>> Hi, 
>>>> 
>>>> I am looking at a test case that looks like this:
>>>> 
>>>> void foo() {
>>>> ... foo();   // I'm recursive!
>>>> 
>>>>  bar();
>>>> }
>>>> 
>>>> bar() {  int a[1000];  // large stack size }
>>>> 
>>>> If we decide to inline bar() into foo()  we may increase the stack
>>>> size to the point of overflow.   I attached a patch to prevent
>>>> inlining of callees which allocate large arrays into a recursive
>>>> caller. 
>>>> 
>>>> Thanks,
>>>> Nadav 
>>>> 
>>>> 
>>>> 
>>> 
>>> 
>>> 
>>> -- 
>>> Hal Finkel
>>> Postdoctoral Appointee
>>> Leadership Computing Facility
>>> Argonne National Laboratory
>> 
> 
> 
> 
> -- 
> Hal Finkel
> Postdoctoral Appointee
> Leadership Computing Facility
> Argonne National Laboratory




More information about the llvm-commits mailing list