From dbc3fbafe7cbf10bac30da4d4b6eb6082fed3daa Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sun, 21 Apr 2019 15:22:54 +0000 Subject: [ConstantRange] Add getNonEmpty() constructor ConstantRanges have an annoying special case: If upper and lower are the same, it can be either an empty or a full set. When constructing constant ranges nearly always a full set is intended, but this still requires an explicit check in many places. This revision adds a getNonEmpty() constructor that disambiguates this case: If upper and lower are the same, a full set is created. Differential Revision: https://reviews.llvm.org/D60947 llvm-svn: 358854 --- llvm/lib/Analysis/ValueTracking.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'llvm/lib/Analysis/ValueTracking.cpp') diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index 9c7b0fad5a8..3b08a2dc7a1 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -5726,8 +5726,7 @@ ConstantRange llvm::computeConstantRange(const Value *V, bool UseInstrInfo) { else if (auto *SI = dyn_cast(V)) setLimitsForSelectPattern(*SI, Lower, Upper); - ConstantRange CR = Lower != Upper ? ConstantRange(Lower, Upper) - : ConstantRange::getFull(BitWidth); + ConstantRange CR = ConstantRange::getNonEmpty(Lower, Upper); if (auto *I = dyn_cast(V)) if (auto *Range = IIQ.getMetadata(I, LLVMContext::MD_range)) -- cgit v1.2.3