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

Chris Lattner clattner at apple.com
Sun Oct 18 21:47:50 PDT 2009


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.

One area that does concern me is in the various code size evaluations  
(inlining, jump threading, unswitch,  ...).  This feature will make  
those completely wrong for code involved in these sorts of checks.

-Chris



More information about the llvm-commits mailing list