[LVI] Hide a confusing internal interface

llvm-svn: 288764
This commit is contained in:
Philip Reames 2016-12-06 02:54:16 +00:00
parent 9a561aa34c
commit b29496246f
1 changed files with 19 additions and 16 deletions

View File

@ -148,6 +148,7 @@ public:
return true; return true;
} }
private:
/// Return true if this is a change in status. /// Return true if this is a change in status.
bool markConstant(Constant *V) { bool markConstant(Constant *V) {
assert(V && "Marking constant with NULL"); assert(V && "Marking constant with NULL");
@ -202,6 +203,8 @@ public:
return true; return true;
} }
public:
/// Merge the specified lattice value into this one, updating this /// Merge the specified lattice value into this one, updating this
/// one and returning true if anything changed. /// one and returning true if anything changed.
bool mergeIn(const LVILatticeVal &RHS, const DataLayout &DL) { 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.) // ValueTracking getting smarter looking back past our immediate inputs.)
if (SelectPatternResult::isMinOrMax(SPR.Flavor) && if (SelectPatternResult::isMinOrMax(SPR.Flavor) &&
LHS == SI->getTrueValue() && RHS == SI->getFalseValue()) { LHS == SI->getTrueValue() && RHS == SI->getFalseValue()) {
switch (SPR.Flavor) { ConstantRange ResultCR = [&]() {
default: switch (SPR.Flavor) {
llvm_unreachable("unexpected minmax type!"); default:
case SPF_SMIN: /// Signed minimum llvm_unreachable("unexpected minmax type!");
BBLV.markConstantRange(TrueCR.smin(FalseCR)); case SPF_SMIN: /// Signed minimum
return true; return TrueCR.smin(FalseCR);
case SPF_UMIN: /// Unsigned minimum case SPF_UMIN: /// Unsigned minimum
BBLV.markConstantRange(TrueCR.umin(FalseCR)); return TrueCR.umin(FalseCR);
return true; case SPF_SMAX: /// Signed maximum
case SPF_SMAX: /// Signed maximum return TrueCR.smax(FalseCR);
BBLV.markConstantRange(TrueCR.smax(FalseCR)); case SPF_UMAX: /// Unsigned maximum
return true; return TrueCR.umax(FalseCR);
case SPF_UMAX: /// Unsigned maximum };
BBLV.markConstantRange(TrueCR.umax(FalseCR)); }();
return true; BBLV = LVILatticeVal::getRange(ResultCR);
}; return true;
} }
// TODO: ABS, NABS from the SelectPatternResult // TODO: ABS, NABS from the SelectPatternResult