From: Owen Anderson Date: Mon, 11 Jun 2007 16:25:17 +0000 (+0000) Subject: Handle functions with multiple exit blocks properly. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=0e71466405344a3d82ef57ec1168e30e7c39f7da;p=oota-llvm.git Handle functions with multiple exit blocks properly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37539 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Scalar/GVNPRE.cpp b/lib/Transforms/Scalar/GVNPRE.cpp index 6a36ea3d010..c43603e6ddc 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& new_set = new_sets[BB]; std::set& availOut = availableOut[BB]; std::set& anticIn = anticipatedIn[BB];