Index: lib/Analysis/BranchProbabilityInfo.cpp =================================================================== --- lib/Analysis/BranchProbabilityInfo.cpp +++ lib/Analysis/BranchProbabilityInfo.cpp @@ -187,6 +187,15 @@ if (TI->getNumSuccessors() == 0) return false; + // Skip probabilities if this block has a single successor. + if (TI->getNumSuccessors() == 1) + return false; + + // Return false here so that edge weights for InvokeInst could be decided + // in calcInvokeHeuristics(). + if (isa(TI)) + return false; + SmallVector UnreachableEdges; SmallVector ReachableEdges; @@ -196,14 +205,8 @@ else ReachableEdges.push_back(I.getSuccessorIndex()); - // Skip probabilities if this block has a single successor or if all were - // reachable. - if (TI->getNumSuccessors() == 1 || UnreachableEdges.empty()) - return false; - - // Return false here so that edge weights for InvokeInst could be decided - // in calcInvokeHeuristics(). - if (isa(TI)) + // Skip probabilities if all were reachable. + if (UnreachableEdges.empty()) return false; if (ReachableEdges.empty()) { @@ -334,6 +337,15 @@ if (TI->getNumSuccessors() == 0) return false; + // Skip probabilities if this block has a single successor. + if (TI->getNumSuccessors() == 1) + return false; + + // Return false here so that edge weights for InvokeInst could be decided + // in calcInvokeHeuristics(). + if (isa(TI)) + return false; + // Determine which successors are post-dominated by a cold block. SmallVector ColdEdges; SmallVector NormalEdges; @@ -343,13 +355,8 @@ else NormalEdges.push_back(I.getSuccessorIndex()); - // Return false here so that edge weights for InvokeInst could be decided - // in calcInvokeHeuristics(). - if (isa(TI)) - return false; - - // Skip probabilities if this block has a single successor. - if (TI->getNumSuccessors() == 1 || ColdEdges.empty()) + // Skip probabilities if no cold edges. + if (ColdEdges.empty()) return false; if (NormalEdges.empty()) {