From f938099aa1b38b23ae3eef30d193ab5c6778895c Mon Sep 17 00:00:00 2001 From: Nick Lewycky Date: Tue, 3 Oct 2006 17:36:01 +0000 Subject: [PATCH] Simplify logic further. Ensure that we copy KnownProperties before calling visitBasicBlock, else we may leak properties into blocks where they don't belong. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30705 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/PredicateSimplifier.cpp | 25 ++++++------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/lib/Transforms/Scalar/PredicateSimplifier.cpp b/lib/Transforms/Scalar/PredicateSimplifier.cpp index 99832907998..2a7d779e704 100644 --- a/lib/Transforms/Scalar/PredicateSimplifier.cpp +++ b/lib/Transforms/Scalar/PredicateSimplifier.cpp @@ -650,31 +650,22 @@ void PredicateSimplifier::visit(BranchInst *BI, PropertySet &KP) { BasicBlock *TrueDest = BI->getSuccessor(0), *FalseDest = BI->getSuccessor(1); - if (Condition == ConstantBool::getTrue() || TrueDest == FalseDest) { - proceedToSuccessors(KP, BB); - return; - } else if (Condition == ConstantBool::getFalse()) { + if (isa(Condition) || TrueDest == FalseDest) { proceedToSuccessors(KP, BB); return; } DTNodeType *Node = DT->getNode(BB); for (DTNodeType::iterator I = Node->begin(), E = Node->end(); I != E; ++I) { - if ((*I)->getBlock() == TrueDest) { - PropertySet TrueProperties(KP); - TrueProperties.addEqual(ConstantBool::getTrue(), Condition); - visitBasicBlock(TrueDest, TrueProperties); - continue; - } + BasicBlock *Dest = (*I)->getBlock(); + PropertySet DestProperties(KP); - if ((*I)->getBlock() == FalseDest) { - PropertySet FalseProperties(KP); - FalseProperties.addEqual(ConstantBool::getFalse(), Condition); - visitBasicBlock(FalseDest, FalseProperties); - continue; - } + if (Dest == TrueDest) + DestProperties.addEqual(ConstantBool::getTrue(), Condition); + else if (Dest == FalseDest) + DestProperties.addEqual(ConstantBool::getFalse(), Condition); - visitBasicBlock((*I)->getBlock(), KP); + visitBasicBlock(Dest, DestProperties); } }