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 | 0e71466405344a3d82ef57ec1168e30e7c39f7da (patch) | |
tree | 3070ab75d96d52b494c1949e9d53a2723014979c /lib/Transforms | |
parent | 2099ff065d5256883d278acb70a44e36b62a6436 (diff) |
Handle functions with multiple exit blocks properly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37539 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms')
-rw-r--r-- | lib/Transforms/Scalar/GVNPRE.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Transforms/Scalar/GVNPRE.cpp b/lib/Transforms/Scalar/GVNPRE.cpp index 6a36ea3d01..c43603e6dd 100644 --- a/lib/Transforms/Scalar/GVNPRE.cpp +++ b/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]; |