[LLVMdev] LiveVariables/LiveInterval on huge functions
edwintorok at gmail.com
Mon Apr 14 02:23:37 PDT 2008
Török Edwin wrote:
> Evan Cheng wrote:
>> On Apr 13, 2008, at 1:28 PM, Török Edwin wrote:
>>> In PR2193 LiveVariables runs out of memory on a 512M limit, after
>>> processing 11557 basicblocks.
>>> VirtRegInfo has ~180000 entries with ~700 bytes each.
>>> If I give it more memory (1.5G) it runs out of memory in LiveInterval.
>> Some of the information kept by LiveVariables are somewhat redundant
>> and can be removed. I think there was talk of folding much of its
>> computation into LiveIntervalAnalysis. It's not clear whether that
>> would make a difference without careful analysis.
>> It's not clear to me what to do about LiveInterval. It does keep a lot
>> of information but it's all essential.
>> I suspect StrongPHIElimination may help the situation somewhat but
>> again I can't guess its impact.
> 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;
More information about the llvm-dev