[llvm-commits] [llvm] r111224 - /llvm/trunk/lib/Transforms/Scalar/CodeGenPrepare.cpp

Evan Cheng evan.cheng at apple.com
Tue Aug 17 10:30:54 PDT 2010


On Aug 17, 2010, at 9:00 AM, Dan Gohman wrote:

> 
> On Aug 16, 2010, at 6:34 PM, Evan Cheng wrote:
> 
>> Author: evancheng
>> Date: Mon Aug 16 20:34:49 2010
>> New Revision: 111224
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=111224&view=rev
>> Log:
>> Add an option to disable codegen prepare critical edge splitting. In theory, PHI elimination is already doing all (most?) of the splitting needed. But machine-licm and machine-sink seem to miss some important optimizations when splitting is disabled.
> 
> MachineLICM, at least, has code to split critical edges on demand. Is
> it missing cases?
> 
> Also, CGP's SplitEdgeNicely has some logic for "nicely" reusing existing
> blocks to avoid creating new blocks, which PHI elimination's splitting
> doesn't have.

Codegen doesn't normalize loops. Without CGP's splitting lots of loops end up missing preheaders. The right fix is for machine licm to insert preheaders on demand. I'm looking into it.

Evan

> 
> Dan
> 





More information about the llvm-commits mailing list