diff options
| author | Dan Gohman <gohman@apple.com> | 2010-08-14 00:29:42 +0000 |
|---|---|---|
| committer | Dan Gohman <gohman@apple.com> | 2010-08-14 00:29:42 +0000 |
| commit | ff62cf7ea87a6be0c54441a015b1081a12919d16 (patch) | |
| tree | e899545fbab9934f663643c00460d582f83819de /lib/Transforms/Scalar/SimplifyCFGPass.cpp | |
| parent | f0b7b5f0d6afdcac071356692a80ab17488ae2ff (diff) | |
| download | external_llvm-ff62cf7ea87a6be0c54441a015b1081a12919d16.zip external_llvm-ff62cf7ea87a6be0c54441a015b1081a12919d16.tar.gz external_llvm-ff62cf7ea87a6be0c54441a015b1081a12919d16.tar.bz2 | |
Teach SimplifyCFG how to simplify indirectbr instructions.
- Eliminate redundant successors.
- Convert an indirectbr with one successor into a direct branch.
Also, generalize SimplifyCFG to be able to be run on a function entry block.
It knows quite a few simplifications which are applicable to the entry
block, and it only needs a few checks to avoid trouble with the entry block.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111060 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Scalar/SimplifyCFGPass.cpp')
| -rw-r--r-- | lib/Transforms/Scalar/SimplifyCFGPass.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/lib/Transforms/Scalar/SimplifyCFGPass.cpp b/lib/Transforms/Scalar/SimplifyCFGPass.cpp index df6ef2e..360749c 100644 --- a/lib/Transforms/Scalar/SimplifyCFGPass.cpp +++ b/lib/Transforms/Scalar/SimplifyCFGPass.cpp @@ -285,10 +285,9 @@ static bool IterativeSimplifyCFG(Function &F, const TargetData *TD) { while (LocalChange) { LocalChange = false; - // Loop over all of the basic blocks (except the first one) and remove them - // if they are unneeded... + // Loop over all of the basic blocks and remove them if they are unneeded... // - for (Function::iterator BBIt = ++F.begin(); BBIt != F.end(); ) { + for (Function::iterator BBIt = F.begin(); BBIt != F.end(); ) { if (SimplifyCFG(BBIt++, TD)) { LocalChange = true; ++NumSimpl; |
