aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2010-06-26 04:27:33 +0000
committerBob Wilson <bob.wilson@apple.com>2010-06-26 04:27:33 +0000
commitc72da6bb56e464156eb58a16867c775b586cb261 (patch)
treeb64bb6cc0b2ff713fa7565c1f8ed7645cca00393 /llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
parent0248da9db42bcd4d4039b7af12e40c99702e184b (diff)
downloadllvm-c72da6bb56e464156eb58a16867c775b586cb261.zip
llvm-c72da6bb56e464156eb58a16867c775b586cb261.tar.gz
llvm-c72da6bb56e464156eb58a16867c775b586cb261.tar.bz2
Clean up some problems with extra CFG edges being introduced during
if-conversion. The RemoveExtraEdges function doesn't work for blocks that end with unanalyzable branches, so in those cases, the "extra" edges must be explicitly removed. The CopyAndPredicateBlock and MergeBlocks methods can also avoid copying successor edges due to branches that have already been removed. The latter case is especially helpful when MergeBlocks is called for handling "diamond" if-conversions, where otherwise you can end up with some weird intermediate states in the CFG. Unfortunately I've been unable to find cases where this cleanup actually makes a significant difference in the code. There is one test where we manage to remove an empty block at the end of a function. Radar 6911268. llvm-svn: 106939
Diffstat (limited to 'llvm/lib/Bitcode/Writer/BitcodeWriter.cpp')
0 files changed, 0 insertions, 0 deletions