From 0e33d9fea245d67f71a7f7138c8094a9c809613e Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Thu, 15 Mar 2012 00:50:21 +0000 Subject: [PATCH] Don't assume that the arguments are processed in some particular order. This appears to not be the case with dragonegg at least in some contexts. Hopefully will fix the bootstrap assert failure there. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152763 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/InlineCost.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/Analysis/InlineCost.cpp b/lib/Analysis/InlineCost.cpp index fa683f695e7..37aa729552b 100644 --- a/lib/Analysis/InlineCost.cpp +++ b/lib/Analysis/InlineCost.cpp @@ -434,9 +434,11 @@ void InlineCostAnalyzer::FunctionInfo::countCodeReductionForPointerPair( = PointerArgs.find(OtherArg); if (ArgIt == PointerArgs.end()) continue; - assert(ArgIt->second < ArgIdx); + std::pair ArgPair(ArgIt->second, ArgIdx); + if (ArgIt->second > ArgIdx) + std::swap(ArgPair.first, ArgPair.second); - PointerArgPairWeights[std::make_pair(ArgIt->second, ArgIdx)] + PointerArgPairWeights[ArgPair] += countCodeReductionForConstant(Metrics, I); } } while (!Worklist.empty());