summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar/GVNPRE.cpp
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2007-06-11 16:25:17 +0000
committerOwen Anderson <resistor@mac.com>2007-06-11 16:25:17 +0000
commitd184c18074b973fb77e1f4757af878b90857e783 (patch)
treeb13dab2b38eff4c5d77dc256bbb89bf29f37b8ca /llvm/lib/Transforms/Scalar/GVNPRE.cpp
parentc43f32b935ef3bade524e898f22ef67dc3b776c3 (diff)
downloadbcm5719-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.cpp6
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];
OpenPOWER on IntegriCloud