[llvm-commits] patch: preserve branch to unreachable until codegenprep time
Nick Lewycky
nicholas at mxc.ca
Sun Oct 18 10:27:19 PDT 2009
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.
Yes, having extra instructions could interfere with optimizations.
Simple DCE isn't the problem though; when CodeGenPrep eliminates the
unreachables, it also DCEs the chain of computations.
One case that could cause trouble is if an instruction had two uses, one
which fed into the "dead" branch and one which didn't, and instcombine
couldn't fold the instruction away only because it had more than one use.
Also if the branch is a loop exit, deleting it
> makes it easier to compute a trip count.
They're easy to detect, just look for a BB whose first instruction is
"unreachable". I'll try making SCEV filter such blocks out of its
ExitingBlocks list.
Nick
More information about the llvm-commits
mailing list