From 796d945d54f9fe9dd55da2bfa23cbcaabcbc6dc1 Mon Sep 17 00:00:00 2001 From: Manman Ren Date: Fri, 14 Sep 2012 19:05:19 +0000 Subject: [PATCH] Try to fix the bots by detecting inconsistant branch-weight metadata. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163926 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Utils/SimplifyCFG.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/Transforms/Utils/SimplifyCFG.cpp b/lib/Transforms/Utils/SimplifyCFG.cpp index 2591dbf7262..551df00a1de 100644 --- a/lib/Transforms/Utils/SimplifyCFG.cpp +++ b/lib/Transforms/Utils/SimplifyCFG.cpp @@ -830,18 +830,24 @@ bool SimplifyCFGOpt::FoldValueComparisonIntoPredecessors(TerminatorInst *TI, bool PredHasWeights = HasBranchWeights(PTI); bool SuccHasWeights = HasBranchWeights(TI); - if (PredHasWeights) + if (PredHasWeights) { GetBranchWeights(PTI, Weights); - else if (SuccHasWeights) + // branch-weight metadata is inconsistant here. + if (Weights.size() != 1 + PredCases.size()) + PredHasWeights = SuccHasWeights = false; + } else if (SuccHasWeights) // If there are no predecessor weights but there are successor weights, // populate Weights with 1, which will later be scaled to the sum of // successor's weights Weights.assign(1 + PredCases.size(), 1); SmallVector SuccWeights; - if (SuccHasWeights) + if (SuccHasWeights) { GetBranchWeights(TI, SuccWeights); - else if (PredHasWeights) + // branch-weight metadata is inconsistant here. + if (SuccWeights.size() != 1 + BBCases.size()) + PredHasWeights = SuccHasWeights = false; + } else if (PredHasWeights) SuccWeights.assign(1 + BBCases.size(), 1); if (PredDefault == BB) { -- 2.34.1