diff options
author | Hal Finkel <hfinkel@anl.gov> | 2013-04-10 22:05:25 +0000 |
---|---|---|
committer | Hal Finkel <hfinkel@anl.gov> | 2013-04-10 22:05:25 +0000 |
commit | 95081bff72741a490e1e8e421eda9867f2c7af17 (patch) | |
tree | 54c454c31d2a0827a60b83e10bd2da9095b1a3e1 /clang/lib/StaticAnalyzer/Checkers/CStringSyntaxChecker.cpp | |
parent | 5be12a14629265331c223d83813e3b5d663d1c25 (diff) | |
download | bcm5719-llvm-95081bff72741a490e1e8e421eda9867f2c7af17.tar.gz bcm5719-llvm-95081bff72741a490e1e8e421eda9867f2c7af17.zip |
Manually remove successors in if conversion when CopyAndPredicateBlock is used
In the simple and triangle if-conversion cases, when CopyAndPredicateBlock is
used because the to-be-predicated block has other predecessors, we need to
explicitly remove the old copied block from the successors list. Normally if
conversion relies on TII->AnalyzeBranch combined with BB->CorrectExtraCFGEdges
to cleanup the successors list, but if the predicated block contained an
un-analyzable branch (such as a now-predicated return), then this will fail.
These extra successors were causing a problem on PPC because it was causing
later passes (such as PPCEarlyReturm) to leave dead return-only basic blocks in
the code.
llvm-svn: 179227
Diffstat (limited to 'clang/lib/StaticAnalyzer/Checkers/CStringSyntaxChecker.cpp')
0 files changed, 0 insertions, 0 deletions