diff options
| author | Owen Anderson <resistor@mac.com> | 2007-06-11 16:25:17 +0000 |
|---|---|---|
| committer | Owen Anderson <resistor@mac.com> | 2007-06-11 16:25:17 +0000 |
| commit | d184c18074b973fb77e1f4757af878b90857e783 (patch) | |
| tree | b13dab2b38eff4c5d77dc256bbb89bf29f37b8ca /llvm/lib/Transforms/Scalar/GVNPRE.cpp | |
| parent | c43f32b935ef3bade524e898f22ef67dc3b776c3 (diff) | |
| download | bcm5719-llvm-d184c18074b973fb77e1f4757af878b90857e783.tar.gz bcm5719-llvm-d184c18074b973fb77e1f4757af878b90857e783.zip | |
Handle functions with multiple exit blocks properly.
llvm-svn: 37539
Diffstat (limited to 'llvm/lib/Transforms/Scalar/GVNPRE.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/GVNPRE.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Scalar/GVNPRE.cpp b/llvm/lib/Transforms/Scalar/GVNPRE.cpp index 6a36ea3d010..c43603e6ddc 100644 --- a/llvm/lib/Transforms/Scalar/GVNPRE.cpp +++ b/llvm/lib/Transforms/Scalar/GVNPRE.cpp @@ -526,6 +526,9 @@ bool GVNPRE::runOnFunction(Function &F) { df_begin(PDT.getRootNode()), E = df_end(PDT.getRootNode()); PDI != E; ++PDI) { BasicBlock* BB = PDI->getBlock(); + if (BB == 0) + continue; + DOUT << "Block: " << BB->getName() << "\n"; DOUT << "TMP_GEN: "; dump(generatedTemporaries[BB]); @@ -635,6 +638,9 @@ bool GVNPRE::runOnFunction(Function &F) { E = df_end(DT.getRootNode()); DI != E; ++DI) { BasicBlock* BB = DI->getBlock(); + if (BB == 0) + continue; + std::set<Value*, ExprLT>& new_set = new_sets[BB]; std::set<Value*, ExprLT>& availOut = availableOut[BB]; std::set<Value*, ExprLT>& anticIn = anticipatedIn[BB]; |

