From: Philip Reames Date: Tue, 6 Dec 2016 02:54:16 +0000 (+0000) Subject: [LVI] Hide a confusing internal interface X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=36c7a941554b9a2725d4d4d1c96a14babe3fca1a;p=llvm [LVI] Hide a confusing internal interface git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@288764 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/LazyValueInfo.cpp b/lib/Analysis/LazyValueInfo.cpp index fb7c949e12d..856238bda2e 100644 --- a/lib/Analysis/LazyValueInfo.cpp +++ b/lib/Analysis/LazyValueInfo.cpp @@ -148,6 +148,7 @@ public: return true; } +private: /// Return true if this is a change in status. bool markConstant(Constant *V) { assert(V && "Marking constant with NULL"); @@ -202,6 +203,8 @@ public: return true; } +public: + /// Merge the specified lattice value into this one, updating this /// one and returning true if anything changed. bool mergeIn(const LVILatticeVal &RHS, const DataLayout &DL) { @@ -1028,22 +1031,22 @@ bool LazyValueInfoImpl::solveBlockValueSelect(LVILatticeVal &BBLV, // ValueTracking getting smarter looking back past our immediate inputs.) if (SelectPatternResult::isMinOrMax(SPR.Flavor) && LHS == SI->getTrueValue() && RHS == SI->getFalseValue()) { - switch (SPR.Flavor) { - default: - llvm_unreachable("unexpected minmax type!"); - case SPF_SMIN: /// Signed minimum - BBLV.markConstantRange(TrueCR.smin(FalseCR)); - return true; - case SPF_UMIN: /// Unsigned minimum - BBLV.markConstantRange(TrueCR.umin(FalseCR)); - return true; - case SPF_SMAX: /// Signed maximum - BBLV.markConstantRange(TrueCR.smax(FalseCR)); - return true; - case SPF_UMAX: /// Unsigned maximum - BBLV.markConstantRange(TrueCR.umax(FalseCR)); - return true; - }; + ConstantRange ResultCR = [&]() { + switch (SPR.Flavor) { + default: + llvm_unreachable("unexpected minmax type!"); + case SPF_SMIN: /// Signed minimum + return TrueCR.smin(FalseCR); + case SPF_UMIN: /// Unsigned minimum + return TrueCR.umin(FalseCR); + case SPF_SMAX: /// Signed maximum + return TrueCR.smax(FalseCR); + case SPF_UMAX: /// Unsigned maximum + return TrueCR.umax(FalseCR); + }; + }(); + BBLV = LVILatticeVal::getRange(ResultCR); + return true; } // TODO: ABS, NABS from the SelectPatternResult