[llvm-commits] patch: preserve branch to unreachable until codegenprep time

Dan Gohman gohman at apple.com
Mon Oct 19 09:21:59 PDT 2009



On Oct 18, 2009, at 9:47 PM, Chris Lattner <clattner at apple.com> wrote:

>
> On Oct 18, 2009, at 10:11 AM, Dan Gohman wrote:
>
>>
>>
>> On Oct 18, 2009, at 12:16 AM, Nick Lewycky <nicholas at mxc.ca> wrote:
>>
>>> This patch moves the code that optimizes "branch to unreachable"
>>> from SimplifyCFG to CodeGenPrep. Most of this patch is just updating
>>> the unit tests that use unreachable everywhere. I've done my best to
>>> preserve the intent of the tests.
>>
>> I haven't read the patch, but I'm concerned about this interfering
>> with other optimizations.  Deleting the condition can expose further
>> dce and related optimizations.  Also if the branch is a loop exit,
>> deleting it makes it easier to compute a trip count.
>
> I agree, but I still think this is a good idea.  :)
>
> LSR and other passes can special case this for trip count handling.   
> We can make simplifycfg delete the branch to unreachable if the  
> condition is "too complicated" to be useful for the optimizer.

Speaking of LSR, if the condition has an IV expr use, this could cause  
LSR to insert an additional IV, or miss an opportunity to eliminate one.

And to resond to Nick's comment about CGP doing trivial DCE, what  
about non-trivial DSE oppportunities only exposed when dead loads are  
deleted?

CGP is very late. Have you considered removing the unreachable blocks  
sometime earlier?

Dan



More information about the llvm-commits mailing list