[LLVMdev] LiveVariables/LiveInterval on huge functions

Evan Cheng evan.cheng at apple.com
Mon Apr 14 14:02:29 PDT 2008


On Apr 14, 2008, at 10:43 AM, Chris Lattner wrote:

> On Mon, 14 Apr 2008, [ISO-8859-1] Török Edwin wrote:
>>> Another question to ask, is why that function became so large in the
>>> first place [X86DAGToDAGISel::SelectCode(llvm::SDOperand)]
>>> We have inline limits, don't we?
>>
>> most of functions called by SelectCode get a -30000 cost reduction
>> because they are internal.
>> Even if Caller.size() is 40000, the penalty is only 2000, thus we  
>> still
>> have negative costs.
>>
>> Removing the /20 factor from here improves the situation a lot,  
>> however
>> I think there is  a reason for /20, and it can't be just removed:
>> InlineCost += Caller->size()/20;
>
> This sounds like unanticipated fallout from Evan's recent tweaks of  
> the inliner.  Evan, thoughts?

Previously the inliner assign each basic block cost of 20. So this  
line is simply estimating the number of caller basic blocks. My tweak  
simply removed the number of basic blocks from the equation so the  
cost of a callee is simply number of instructions * 5. I don't think  
it should / would impact this case. Edwin, can you revert 49061 and  
48725 to see if they have any impact?

The -30000 cost reduction for internal function does seem excessive  
though.

Evan

>
>
> -Chris
>
> -- 
> http://nondot.org/sabre/
> http://llvm.org/





More information about the llvm-dev mailing list