reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

Declarations

include/llvm/Analysis/LazyValueInfo.h
   23   class ConstantRange;
include/llvm/Analysis/ScalarEvolutionExpressions.h
   34 class ConstantRange;
include/llvm/IR/GlobalValue.h
   35 class ConstantRange;

References

include/llvm/ADT/ArrayRef.h
   43     using iterator = const T *;
   44     using const_iterator = const T *;
   50     const T *Data = nullptr;
   66     /*implicit*/ ArrayRef(const T &OneElt)
   70     /*implicit*/ ArrayRef(const T *data, size_t length)
   74     ArrayRef(const T *begin, const T *end)
   74     ArrayRef(const T *begin, const T *end)
   81     /*implicit*/ ArrayRef(const SmallVectorTemplateCommon<T, U> &Vec)
   87     /*implicit*/ ArrayRef(const std::vector<T, A> &Vec)
   92     /*implicit*/ constexpr ArrayRef(const std::array<T, N> &Arr)
   97     /*implicit*/ constexpr ArrayRef(const T (&Arr)[N]) : Data(Arr), Length(N) {}
  100     /*implicit*/ ArrayRef(const std::initializer_list<T> &Vec)
  145     const T *data() const { return Data; }
  151     const T &front() const {
  157     const T &back() const {
  163     template <typename Allocator> ArrayRef<T> copy(Allocator &A) {
  178     ArrayRef<T> slice(size_t N, size_t M) const {
  184     ArrayRef<T> slice(size_t N) const { return slice(N, size() - N); }
  187     ArrayRef<T> drop_front(size_t N = 1) const {
  193     ArrayRef<T> drop_back(size_t N = 1) const {
  200     template <class PredicateT> ArrayRef<T> drop_while(PredicateT Pred) const {
  206     template <class PredicateT> ArrayRef<T> drop_until(PredicateT Pred) const {
  211     ArrayRef<T> take_front(size_t N = 1) const {
  218     ArrayRef<T> take_back(size_t N = 1) const {
  226     template <class PredicateT> ArrayRef<T> take_while(PredicateT Pred) const {
  232     template <class PredicateT> ArrayRef<T> take_until(PredicateT Pred) const {
  239     const T &operator[](size_t Index) const {
  249     typename std::enable_if<std::is_same<U, T>::value, ArrayRef<T>>::type &
  257     typename std::enable_if<std::is_same<U, T>::value, ArrayRef<T>>::type &
  263     std::vector<T> vec() const {
  270     operator std::vector<T>() const {
include/llvm/ADT/DenseMap.h
   40 struct DenseMapPair : public std::pair<KeyT, ValueT> {
   45   ValueT &getSecond() { return std::pair<KeyT, ValueT>::second; }
   46   const ValueT &getSecond() const { return std::pair<KeyT, ValueT>::second; }
   66   using mapped_type = ValueT;
   69   using iterator = DenseMapIterator<KeyT, ValueT, KeyInfoT, BucketT>;
   71       DenseMapIterator<KeyT, ValueT, KeyInfoT, BucketT, true>;
  123         is_trivially_copyable<ValueT>::value) {
  185   ValueT lookup(const_arg_type_t<KeyT> Val) const {
  219         InsertIntoBucket(TheBucket, std::move(Key), std::forward<Ts>(Args)...);
  237     TheBucket = InsertIntoBucket(TheBucket, Key, std::forward<Ts>(Args)...);
  299   ValueT &operator[](const KeyT &Key) {
  311   ValueT &operator[](KeyT &&Key) {
  380         ::new (&DestBucket->getSecond()) ValueT(std::move(B->getSecond()));
  392       const DenseMapBase<OtherBaseT, KeyT, ValueT, KeyInfoT, BucketT> &other) {
  516                             ValueArgs &&... Values) {
  520     ::new (&TheBucket->getSecond()) ValueT(std::forward<ValueArgs>(Values)...);
  520     ::new (&TheBucket->getSecond()) ValueT(std::forward<ValueArgs>(Values)...);
  526                                       ValueT &&Value, LookupKeyT &Lookup) {
  684 class DenseMap : public DenseMapBase<DenseMap<KeyT, ValueT, KeyInfoT, BucketT>,
  685                                      KeyT, ValueT, KeyInfoT, BucketT> {
  690   using BaseT = DenseMapBase<DenseMap, KeyT, ValueT, KeyInfoT, BucketT>;
 1163   using ConstIterator = DenseMapIterator<KeyT, ValueT, KeyInfoT, Bucket, true>;
 1199       const DenseMapIterator<KeyT, ValueT, KeyInfoT, Bucket, IsConstSrc> &I)
include/llvm/ADT/MapVector.h
   83   std::pair<KeyT, ValueT>       &front()       { return Vector.front(); }
   84   const std::pair<KeyT, ValueT> &front() const { return Vector.front(); }
   85   std::pair<KeyT, ValueT>       &back()        { return Vector.back(); }
   86   const std::pair<KeyT, ValueT> &back()  const { return Vector.back(); }
   98   ValueT &operator[](const KeyT &Key) {
  110   ValueT lookup(const KeyT &Key) const {
  117   std::pair<iterator, bool> insert(const std::pair<KeyT, ValueT> &KV) {
  129   std::pair<iterator, bool> insert(std::pair<KeyT, ValueT> &&KV) {
include/llvm/ADT/Optional.h
   39     T value;
   60   explicit OptionalStorage(in_place_t, Args &&... args)
   61       : value(std::forward<Args>(args)...), hasVal(true) {}
   72   T &getValue() LLVM_LVALUE_FUNCTION noexcept {
   76   T const &getValue() const LLVM_LVALUE_FUNCTION noexcept {
   81   T &&getValue() && noexcept {
   87   template <class... Args> void emplace(Args &&... args) {
   89     ::new ((void *)std::addressof(value)) T(std::forward<Args>(args)...);
   89     ::new ((void *)std::addressof(value)) T(std::forward<Args>(args)...);
  216   optional_detail::OptionalStorage<T> Storage;
  219   using value_type = T;
  224   Optional(const T &y) : Storage(optional_detail::in_place_t{}, y) {}
  227   Optional(T &&y) : Storage(optional_detail::in_place_t{}, std::move(y)) {}
  230   Optional &operator=(T &&y) {
  241   static inline Optional create(const T *y) {
  245   Optional &operator=(const T &y) {
  253   const T *getPointer() const { return &Storage.getValue(); }
  254   T *getPointer() { return &Storage.getValue(); }
  255   const T &getValue() const LLVM_LVALUE_FUNCTION { return Storage.getValue(); }
  256   T &getValue() LLVM_LVALUE_FUNCTION { return Storage.getValue(); }
  260   const T *operator->() const { return getPointer(); }
  261   T *operator->() { return getPointer(); }
  262   const T &operator*() const LLVM_LVALUE_FUNCTION { return getValue(); }
  263   T &operator*() LLVM_LVALUE_FUNCTION { return getValue(); }
  266   constexpr T getValueOr(U &&value) const LLVM_LVALUE_FUNCTION {
  271   T &&getValue() && { return std::move(Storage.getValue()); }
  272   T &&operator*() && { return std::move(Storage.getValue()); }
  275   T getValueOr(U &&value) && {
include/llvm/ADT/SmallVector.h
   75   AlignedCharArrayUnion<T> FirstEl;
  114   using value_type = T;
  115   using iterator = T *;
  116   using const_iterator = const T *;
  121   using reference = T &;
  122   using const_reference = const T &;
  123   using pointer = T *;
  124   using const_pointer = const T *;
  179 class SmallVectorTemplateBase : public SmallVectorTemplateCommon<T> {
  183   static void destroy_range(T *S, T *E) {
  183   static void destroy_range(T *S, T *E) {
  211   void push_back(const T &Elt) {
  214     ::new ((void*) this->end()) T(Elt);
  218   void push_back(T &&Elt) {
  221     ::new ((void*) this->end()) T(::std::move(Elt));
  240   T *NewElts = static_cast<T*>(llvm::safe_malloc(NewCapacity*sizeof(T)));
  240   T *NewElts = static_cast<T*>(llvm::safe_malloc(NewCapacity*sizeof(T)));
  315 class SmallVectorImpl : public SmallVectorTemplateBase<T> {
  316   using SuperClass = SmallVectorTemplateBase<T>;
  357   void resize(size_type N, const T &NV) {
  374   LLVM_NODISCARD T pop_back_val() {
  397   void append(size_type NumInputs, const T &Elt) {
  405   void append(std::initializer_list<T> IL) {
  412   void assign(size_type NumElts, const T &Elt) {
  429   void assign(std::initializer_list<T> IL) {
  467   iterator insert(iterator I, T &&Elt) {
  497   iterator insert(iterator I, const T &Elt) {
  526   iterator insert(iterator I, size_type NumToInsert, const T &Elt) {
  637   void insert(iterator I, std::initializer_list<T> IL) {
  641   template <typename... ArgTypes> reference emplace_back(ArgTypes &&... Args) {
  644     ::new ((void *)this->end()) T(std::forward<ArgTypes>(Args)...);
  820   AlignedCharArrayUnion<T> InlineElts[N];
  837 class SmallVector : public SmallVectorImpl<T>, SmallVectorStorage<T, N> {
  837 class SmallVector : public SmallVectorImpl<T>, SmallVectorStorage<T, N> {
  846   explicit SmallVector(size_t Size, const T &Value = T())
  865   SmallVector(std::initializer_list<T> IL) : SmallVectorImpl<T>(N) {
  884   SmallVector(SmallVectorImpl<T> &&RHS) : SmallVectorImpl<T>(N) {
include/llvm/Analysis/LazyValueInfo.h
   88   ConstantRange getConstantRange(Value *V, BasicBlock *BB, Instruction *CxtI = nullptr);
   98   ConstantRange getConstantRangeOnEdge(Value *V, BasicBlock *FromBB,
include/llvm/Analysis/ScalarEvolution.h
  817   ConstantRange getUnsignedRange(const SCEV *S) {
  833   ConstantRange getSignedRange(const SCEV *S) {
 1421   DenseMap<const SCEV *, ConstantRange> UnsignedRanges;
 1424   DenseMap<const SCEV *, ConstantRange> SignedRanges;
 1430   const ConstantRange &setRange(const SCEV *S, RangeSignHint Hint,
 1431                                 ConstantRange CR) {
 1432     DenseMap<const SCEV *, ConstantRange> &Cache =
 1444   const ConstantRange &getRangeRef(const SCEV *S, RangeSignHint Hint);
 1448   ConstantRange getRangeForAffineAR(const SCEV *Start, const SCEV *Stop,
 1454   ConstantRange getRangeViaFactoring(const SCEV *Start, const SCEV *Stop,
include/llvm/Analysis/ScalarEvolutionExpressions.h
  354     const SCEV *getNumIterationsInRange(const ConstantRange &Range,
include/llvm/Analysis/ValueLattice.h
   58     ConstantRange Range;
  103         new (&Range) ConstantRange(Other.Range);
  131   static ValueLatticeElement getRange(ConstantRange CR) {
  158   const ConstantRange &getConstantRange() const {
  218   void markConstantRange(ConstantRange NewR) {
  233       new (&Range) ConstantRange(std::move(NewR));
  274     ConstantRange NewR = getConstantRange().unionWith(RHS.getConstantRange());
  306     const auto &CR = getConstantRange();
  307     const auto &OtherCR = Other.getConstantRange();
  308     if (ConstantRange::makeSatisfyingICmpRegion(Pred, OtherCR).contains(CR))
  310     if (ConstantRange::makeSatisfyingICmpRegion(
include/llvm/Analysis/ValueTracking.h
  503   ConstantRange computeConstantRange(const Value *V, bool UseInstrInfo = true);
include/llvm/IR/ConstantRange.h
   51   ConstantRange getEmpty() const {
   56   ConstantRange getFull() const {
   73   static ConstantRange getEmpty(uint32_t BitWidth) {
   78   static ConstantRange getFull(uint32_t BitWidth) {
   84   static ConstantRange getNonEmpty(APInt Lower, APInt Upper) {
   93   static ConstantRange fromKnownBits(const KnownBits &Known, bool IsSigned);
  103   static ConstantRange makeAllowedICmpRegion(CmpInst::Predicate Pred,
  104                                              const ConstantRange &Other);
  114   static ConstantRange makeSatisfyingICmpRegion(CmpInst::Predicate Pred,
  115                                                 const ConstantRange &Other);
  124   static ConstantRange makeExactICmpRegion(CmpInst::Predicate Pred,
  143   static ConstantRange makeGuaranteedNoWrapRegion(Instruction::BinaryOps BinOp,
  144                                                   const ConstantRange &Other,
  149   static ConstantRange makeExactNoWrapRegion(Instruction::BinaryOps BinOp,
  204   bool contains(const ConstantRange &CR) const;
  225   bool isSizeStrictlySmallerThan(const ConstantRange &CR) const;
  249   bool operator==(const ConstantRange &CR) const {
  252   bool operator!=(const ConstantRange &CR) const {
  257   ConstantRange subtract(const APInt &CI) const;
  261   ConstantRange difference(const ConstantRange &CR) const;
  261   ConstantRange difference(const ConstantRange &CR) const;
  277   ConstantRange intersectWith(const ConstantRange &CR,
  277   ConstantRange intersectWith(const ConstantRange &CR,
  285   ConstantRange unionWith(const ConstantRange &CR,
  285   ConstantRange unionWith(const ConstantRange &CR,
  294   ConstantRange castOp(Instruction::CastOps CastOp,
  301   ConstantRange zeroExtend(uint32_t BitWidth) const;
  307   ConstantRange signExtend(uint32_t BitWidth) const;
  313   ConstantRange truncate(uint32_t BitWidth) const;
  317   ConstantRange zextOrTrunc(uint32_t BitWidth) const;
  321   ConstantRange sextOrTrunc(uint32_t BitWidth) const;
  326   ConstantRange binaryOp(Instruction::BinaryOps BinOp,
  327                          const ConstantRange &Other) const;
  333   ConstantRange overflowingBinaryOp(Instruction::BinaryOps BinOp,
  334                                     const ConstantRange &Other,
  339   ConstantRange add(const ConstantRange &Other) const;
  339   ConstantRange add(const ConstantRange &Other) const;
  346   ConstantRange addWithNoWrap(const ConstantRange &Other, unsigned NoWrapKind,
  346   ConstantRange addWithNoWrap(const ConstantRange &Other, unsigned NoWrapKind,
  351   ConstantRange sub(const ConstantRange &Other) const;
  351   ConstantRange sub(const ConstantRange &Other) const;
  356   ConstantRange multiply(const ConstantRange &Other) const;
  356   ConstantRange multiply(const ConstantRange &Other) const;
  360   ConstantRange smax(const ConstantRange &Other) const;
  360   ConstantRange smax(const ConstantRange &Other) const;
  364   ConstantRange umax(const ConstantRange &Other) const;
  364   ConstantRange umax(const ConstantRange &Other) const;
  368   ConstantRange smin(const ConstantRange &Other) const;
  368   ConstantRange smin(const ConstantRange &Other) const;
  372   ConstantRange umin(const ConstantRange &Other) const;
  372   ConstantRange umin(const ConstantRange &Other) const;
  377   ConstantRange udiv(const ConstantRange &Other) const;
  377   ConstantRange udiv(const ConstantRange &Other) const;
  384   ConstantRange sdiv(const ConstantRange &Other) const;
  384   ConstantRange sdiv(const ConstantRange &Other) const;
  389   ConstantRange urem(const ConstantRange &Other) const;
  389   ConstantRange urem(const ConstantRange &Other) const;
  394   ConstantRange srem(const ConstantRange &Other) const;
  394   ConstantRange srem(const ConstantRange &Other) const;
  398   ConstantRange binaryAnd(const ConstantRange &Other) const;
  398   ConstantRange binaryAnd(const ConstantRange &Other) const;
  402   ConstantRange binaryOr(const ConstantRange &Other) const;
  402   ConstantRange binaryOr(const ConstantRange &Other) const;
  407   ConstantRange shl(const ConstantRange &Other) const;
  407   ConstantRange shl(const ConstantRange &Other) const;
  411   ConstantRange lshr(const ConstantRange &Other) const;
  411   ConstantRange lshr(const ConstantRange &Other) const;
  415   ConstantRange ashr(const ConstantRange &Other) const;
  415   ConstantRange ashr(const ConstantRange &Other) const;
  418   ConstantRange uadd_sat(const ConstantRange &Other) const;
  418   ConstantRange uadd_sat(const ConstantRange &Other) const;
  421   ConstantRange sadd_sat(const ConstantRange &Other) const;
  421   ConstantRange sadd_sat(const ConstantRange &Other) const;
  424   ConstantRange usub_sat(const ConstantRange &Other) const;
  424   ConstantRange usub_sat(const ConstantRange &Other) const;
  427   ConstantRange ssub_sat(const ConstantRange &Other) const;
  427   ConstantRange ssub_sat(const ConstantRange &Other) const;
  430   ConstantRange inverse() const;
  434   ConstantRange abs() const;
  450   OverflowResult unsignedAddMayOverflow(const ConstantRange &Other) const;
  453   OverflowResult signedAddMayOverflow(const ConstantRange &Other) const;
  456   OverflowResult unsignedSubMayOverflow(const ConstantRange &Other) const;
  459   OverflowResult signedSubMayOverflow(const ConstantRange &Other) const;
  462   OverflowResult unsignedMulMayOverflow(const ConstantRange &Other) const;
  471 inline raw_ostream &operator<<(raw_ostream &OS, const ConstantRange &CR) {
  479 ConstantRange getConstantRangeFromMetadata(const MDNode &RangeMD);
include/llvm/IR/GlobalValue.h
  565   Optional<ConstantRange> getAbsoluteSymbolRange() const;
include/llvm/Support/AlignOf.h
   30   T t;
   39 template <typename T> union SizerImpl<T> { char arr[sizeof(T)]; };
   50       llvm::detail::SizerImpl<T, Ts...>)];
include/llvm/Support/type_traits.h
   91     T t;
  122     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<const F &>(), std::true_type{});
  122     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<const F &>(), std::true_type{});
  122     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<const F &>(), std::true_type{});
  130     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<F &&>(), std::true_type{});
  130     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<F &&>(), std::true_type{});
  130     static auto get(F*) -> decltype(std::declval<F &>() = std::declval<F &&>(), std::true_type{});
  145       std::is_copy_constructible<detail::trivial_helper<T>>::value;
  147       !std::is_copy_constructible<T>::value;
  151       std::is_move_constructible<detail::trivial_helper<T>>::value;
  153       !std::is_move_constructible<T>::value;
  157       is_copy_assignable<detail::trivial_helper<T>>::value;
  159       !is_copy_assignable<T>::value;
  163       is_move_assignable<detail::trivial_helper<T>>::value;
  165       !is_move_assignable<T>::value;
  169       std::is_destructible<detail::trivial_helper<T>>::value;
include/llvm/Transforms/Scalar/Float2Int.h
   35   void seen(Instruction *I, ConstantRange R);
   36   ConstantRange badRange();
   37   ConstantRange unknownRange();
   38   ConstantRange validateRange(ConstantRange R);
   38   ConstantRange validateRange(ConstantRange R);
   45   MapVector<Instruction *, ConstantRange> SeenInsts;
lib/Analysis/InstructionSimplify.cpp
 1547   auto Range0 = ConstantRange::makeExactICmpRegion(Cmp0->getPredicate(), *C0);
 1547   auto Range0 = ConstantRange::makeExactICmpRegion(Cmp0->getPredicate(), *C0);
 1548   auto Range1 = ConstantRange::makeExactICmpRegion(Cmp1->getPredicate(), *C1);
 1548   auto Range1 = ConstantRange::makeExactICmpRegion(Cmp1->getPredicate(), *C1);
 2644   ConstantRange RHS_CR = ConstantRange::makeExactICmpRegion(Pred, *C);
 2644   ConstantRange RHS_CR = ConstantRange::makeExactICmpRegion(Pred, *C);
 2650   ConstantRange LHS_CR = computeConstantRange(LHS, IIQ.UseInstrInfo);
 3227       auto RHS_CR = getConstantRangeFromMetadata(
 3229       auto LHS_CR = getConstantRangeFromMetadata(
 3232       auto Satisfied_CR = ConstantRange::makeSatisfyingICmpRegion(Pred, RHS_CR);
 3232       auto Satisfied_CR = ConstantRange::makeSatisfyingICmpRegion(Pred, RHS_CR);
 3236       auto InversedSatisfied_CR = ConstantRange::makeSatisfyingICmpRegion(
 3236       auto InversedSatisfied_CR = ConstantRange::makeSatisfyingICmpRegion(
lib/Analysis/LazyValueInfo.cpp
  119   ConstantRange Range =
  423   Optional<ConstantRange> getRangeForOperand(unsigned Op, Instruction *I,
  427       std::function<ConstantRange(const ConstantRange &,
  427       std::function<ConstantRange(const ConstantRange &,
  428                                   const ConstantRange &)> OpFn);
  887     const ConstantRange &TrueCR = TrueVal.getConstantRange();
  888     const ConstantRange &FalseCR = FalseVal.getConstantRange();
  896       ConstantRange ResultCR = [&]() {
  926       ConstantRange Zero(APInt::getNullValue(TrueCR.getBitWidth()));
  996 Optional<ConstantRange> LazyValueInfoImpl::getRangeForOperand(unsigned Op,
 1005   ConstantRange Range = ConstantRange::getFull(OperandBitWidth);
 1005   ConstantRange Range = ConstantRange::getFull(OperandBitWidth);
 1045   Optional<ConstantRange> LHSRes = getRangeForOperand(0, CI, BB);
 1049   ConstantRange LHSRange = LHSRes.getValue();
 1063     std::function<ConstantRange(const ConstantRange &,
 1063     std::function<ConstantRange(const ConstantRange &,
 1064                                 const ConstantRange &)> OpFn) {
 1069   Optional<ConstantRange> LHSRes = getRangeForOperand(0, I, BB);
 1070   Optional<ConstantRange> RHSRes = getRangeForOperand(1, I, BB);
 1075   ConstantRange LHSRange = LHSRes.getValue();
 1076   ConstantRange RHSRange = RHSRes.getValue();
 1230     ConstantRange RHSRange(RHS->getType()->getIntegerBitWidth(),
 1241     ConstantRange TrueValues =
 1242             ConstantRange::makeAllowedICmpRegion(Pred, RHSRange);
 1265   ConstantRange NWR = ConstantRange::makeExactNoWrapRegion(
 1265   ConstantRange NWR = ConstantRange::makeExactNoWrapRegion(
 1469     ConstantRange EdgesVals(BitWidth, DefaultCase/*isFullSet*/);
 1473       ConstantRange EdgeVal(CaseValue);
 1707     const ConstantRange &CR = Result.getConstantRange();
 1714 ConstantRange LazyValueInfo::getConstantRange(Value *V, BasicBlock *BB,
 1722     return ConstantRange::getEmpty(Width);
 1729   return ConstantRange::getFull(Width);
 1744     const ConstantRange &CR = Result.getConstantRange();
 1751 ConstantRange LazyValueInfo::getConstantRangeOnEdge(Value *V,
 1761     return ConstantRange::getEmpty(Width);
 1768   return ConstantRange::getFull(Width);
 1787     const ConstantRange &CR = Val.getConstantRange();
 1802       ConstantRange TrueValues = ConstantRange::makeExactICmpRegion(
 1802       ConstantRange TrueValues = ConstantRange::makeExactICmpRegion(
lib/Analysis/ScalarEvolution.cpp
 1675     ConstantRange CR = getUnsignedRange(X);
 1986     ConstantRange CR = getSignedRange(X);
 2383       auto NSWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
 2383       auto NSWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
 2391       auto NUWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
 2391       auto NUWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
 4443     ConstantRange AddRecRange = getSignedRange(AR);
 4444     ConstantRange IncRange = getSignedRange(AR->getStepRecurrence(*this));
 4446     auto NSWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
 4446     auto NSWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
 4453     ConstantRange AddRecRange = getUnsignedRange(AR);
 4454     ConstantRange IncRange = getUnsignedRange(AR->getStepRecurrence(*this));
 4456     auto NUWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
 4456     auto NUWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
 5525 static Optional<ConstantRange> GetRangeFromMetadata(Value *V) {
 5536 const ConstantRange &
 5539   DenseMap<const SCEV *, ConstantRange> &Cache =
 5542   ConstantRange::PreferredRangeType RangeType =
 5544           ? ConstantRange::Unsigned : ConstantRange::Signed;
 5544           ? ConstantRange::Unsigned : ConstantRange::Signed;
 5547   DenseMap<const SCEV *, ConstantRange>::iterator I = Cache.find(S);
 5555   ConstantRange ConservativeResult(BitWidth, /*isFullSet=*/true);
 5572     ConstantRange X = getRangeRef(Add->getOperand(0), SignHint);
 5580     ConstantRange X = getRangeRef(Mul->getOperand(0), SignHint);
 5588     ConstantRange X = getRangeRef(SMax->getOperand(0), SignHint);
 5596     ConstantRange X = getRangeRef(UMax->getOperand(0), SignHint);
 5604     ConstantRange X = getRangeRef(SMin->getOperand(0), SignHint);
 5612     ConstantRange X = getRangeRef(UMin->getOperand(0), SignHint);
 5620     ConstantRange X = getRangeRef(UDiv->getLHS(), SignHint);
 5621     ConstantRange Y = getRangeRef(UDiv->getRHS(), SignHint);
 5627     ConstantRange X = getRangeRef(ZExt->getOperand(), SignHint);
 5634     ConstantRange X = getRangeRef(SExt->getOperand(), SignHint);
 5641     ConstantRange X = getRangeRef(Trunc->getOperand(), SignHint);
 5680         auto RangeFromAffine = getRangeForAffineAR(
 5687         auto RangeFromFactoring = getRangeViaFactoring(
 5701     Optional<ConstantRange> MDRange = GetRangeFromMetadata(U->getValue());
 5732         ConstantRange RangeFromOps(BitWidth, /*isFullSet=*/false);
 5734           auto OpRange = getRangeRef(getSCEV(Op), SignHint);
 5758 static ConstantRange getRangeForAffineARHelper(APInt Step,
 5759                                                const ConstantRange &StartRange,
 5771     return ConstantRange::getFull(BitWidth);
 5787     return ConstantRange::getFull(BitWidth);
 5806     return ConstantRange::getFull(BitWidth);
 5815   return ConstantRange::getNonEmpty(std::move(NewLower), std::move(NewUpper));
 5818 ConstantRange ScalarEvolution::getRangeForAffineAR(const SCEV *Start,
 5830   ConstantRange StartSRange = getSignedRange(Start);
 5831   ConstantRange StepSRange = getSignedRange(Step);
 5835   ConstantRange SR =
 5843   ConstantRange UR = getRangeForAffineARHelper(
 5848   return SR.intersectWith(UR, ConstantRange::Smallest);
 5851 ConstantRange ScalarEvolution::getRangeViaFactoring(const SCEV *Start,
 5932     return ConstantRange::getFull(BitWidth);
 5936     return ConstantRange::getFull(BitWidth);
 5942     return ConstantRange::getFull(BitWidth);
 5958   ConstantRange TrueRange =
 5960   ConstantRange FalseRange =
 7402         ConstantRange CompRange =
 7403             ConstantRange::makeExactICmpRegion(Pred, RHSC->getAPInt());
 8575                           const ConstantRange &Range, ScalarEvolution &SE) {
 8799       ConstantRange CR = getUnsignedRange(DistancePlusOne);
 8946       ConstantRange ExactCR = ConstantRange::makeExactICmpRegion(Pred, RA);
 8946       ConstantRange ExactCR = ConstantRange::makeExactICmpRegion(Pred, RA);
 9332     return ConstantRange::makeSatisfyingICmpRegion(Pred, RangeRHS)
10463   ConstantRange FoundLHSRange =
10464       ConstantRange::makeAllowedICmpRegion(Pred, ConstFoundRHS);
10467   ConstantRange LHSRange = FoundLHSRange.add(ConstantRange(*Addend));
10472   ConstantRange SatisfyingLHSRange =
10473       ConstantRange::makeSatisfyingICmpRegion(Pred, ConstRHS);
10796 const SCEV *SCEVAddRecExpr::getNumIterationsInRange(const ConstantRange &Range,
lib/Analysis/StackSafetyAnalysis.cpp
   66   ConstantRange Offset;
   67   PassAsArgInfo(const GlobalValue *Callee, size_t ParamNo, ConstantRange Offset)
   82   ConstantRange Range;
   89   void updateRange(ConstantRange R) { Range = Range.unionWith(R); }
  208   const ConstantRange UnknownRange;
  210   ConstantRange offsetFromAlloca(Value *Addr, const Value *AllocaPtr);
  211   ConstantRange getAccessRange(Value *Addr, const Value *AllocaPtr,
  213   ConstantRange getMemIntrinsicAccessRange(const MemIntrinsic *MI, const Use &U,
  218   ConstantRange getRange(uint64_t Lower, uint64_t Upper) const {
  232 ConstantRange
  240   ConstantRange Offset = SE.getUnsignedRange(Expr).zextOrTrunc(PointerSize);
  245 ConstantRange StackSafetyLocalAnalysis::getAccessRange(Value *Addr,
  254   ConstantRange AccessStartRange =
  256   ConstantRange SizeRange = getRange(0, AccessSize);
  257   ConstantRange AccessRange = AccessStartRange.add(SizeRange);
  262 ConstantRange StackSafetyLocalAnalysis::getMemIntrinsicAccessRange(
  275   ConstantRange AccessRange = getAccessRange(U, AllocaPtr, Len->getZExtValue());
  348             ConstantRange Offset = offsetFromAlloca(UI, Ptr);
  403   const ConstantRange UnknownRange;
  405   ConstantRange getArgumentAccessRange(const GlobalValue *Callee,
  442 ConstantRange
  466     ConstantRange CalleeRange = getArgumentAccessRange(CS.Callee, CS.ParamNo);
lib/Analysis/ValueTracking.cpp
  452     ConstantRange Range(Lower->getValue(), Upper->getValue());
 1987     ConstantRange Range(Lower->getValue(), Upper->getValue());
 3983 static OverflowResult mapOverflowResult(ConstantRange::OverflowResult OR) {
 3985     case ConstantRange::OverflowResult::MayOverflow:
 3987     case ConstantRange::OverflowResult::AlwaysOverflowsLow:
 3989     case ConstantRange::OverflowResult::AlwaysOverflowsHigh:
 3991     case ConstantRange::OverflowResult::NeverOverflows:
 3998 static ConstantRange computeConstantRangeIncludingKnownBits(
 4004   ConstantRange CR1 = ConstantRange::fromKnownBits(Known, ForSigned);
 4004   ConstantRange CR1 = ConstantRange::fromKnownBits(Known, ForSigned);
 4005   ConstantRange CR2 = computeConstantRange(V, UseInstrInfo);
 4006   ConstantRange::PreferredRangeType RangeType =
 4007       ForSigned ? ConstantRange::Signed : ConstantRange::Unsigned;
 4007       ForSigned ? ConstantRange::Signed : ConstantRange::Unsigned;
 4019   ConstantRange LHSRange = ConstantRange::fromKnownBits(LHSKnown, false);
 4019   ConstantRange LHSRange = ConstantRange::fromKnownBits(LHSKnown, false);
 4020   ConstantRange RHSRange = ConstantRange::fromKnownBits(RHSKnown, false);
 4020   ConstantRange RHSRange = ConstantRange::fromKnownBits(RHSKnown, false);
 4071   ConstantRange LHSRange = computeConstantRangeIncludingKnownBits(
 4074   ConstantRange RHSRange = computeConstantRangeIncludingKnownBits(
 4109   ConstantRange LHSRange = computeConstantRangeIncludingKnownBits(
 4111   ConstantRange RHSRange = computeConstantRangeIncludingKnownBits(
 4149   ConstantRange LHSRange = computeConstantRangeIncludingKnownBits(
 4151   ConstantRange RHSRange = computeConstantRangeIncludingKnownBits(
 4168   ConstantRange LHSRange = computeConstantRangeIncludingKnownBits(
 4170   ConstantRange RHSRange = computeConstantRangeIncludingKnownBits(
 5255   ConstantRange DomCR =
 5256       ConstantRange::makeExactICmpRegion(APred, C1->getValue());
 5257   ConstantRange CR =
 5258       ConstantRange::makeAllowedICmpRegion(BPred, C2->getValue());
 5259   ConstantRange Intersection = DomCR.intersectWith(CR);
 5260   ConstantRange Difference = DomCR.difference(CR);
 5687 ConstantRange llvm::computeConstantRange(const Value *V, bool UseInstrInfo) {
 5705   ConstantRange CR = ConstantRange::getNonEmpty(Lower, Upper);
 5705   ConstantRange CR = ConstantRange::getNonEmpty(Lower, Upper);
lib/CodeGen/SafeStack.cpp
  236   ConstantRange AccessStartRange = SE.getUnsignedRange(Expr);
  237   ConstantRange SizeRange =
  239   ConstantRange AccessRange = AccessStartRange.add(SizeRange);
  240   ConstantRange AllocaRange =
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
 8583   ConstantRange CR = getConstantRangeFromMetadata(*Range);
lib/IR/ConstantRange.cpp
   57 ConstantRange ConstantRange::fromKnownBits(const KnownBits &Known,
   77 ConstantRange ConstantRange::makeAllowedICmpRegion(CmpInst::Predicate Pred,
   78                                                    const ConstantRange &CR) {
  127 ConstantRange ConstantRange::makeSatisfyingICmpRegion(CmpInst::Predicate Pred,
  128                                                       const ConstantRange &CR) {
  137 ConstantRange ConstantRange::makeExactICmpRegion(CmpInst::Predicate Pred,
  184 static ConstantRange makeExactMulNUWRegion(const APInt &V) {
  187     return ConstantRange::getFull(V.getBitWidth());
  189   return ConstantRange::getNonEmpty(
  197 static ConstantRange makeExactMulNSWRegion(const APInt &V) {
  202     return ConstantRange::getFull(BitWidth);
  224 ConstantRange
  226                                           const ConstantRange &Other,
  276     ConstantRange ShAmt = Other.intersectWith(
  296 ConstantRange ConstantRange::makeExactNoWrapRegion(Instruction::BinaryOps BinOp,
  329 ConstantRange::isSizeStrictlySmallerThan(const ConstantRange &Other) const {
  397 bool ConstantRange::contains(const ConstantRange &Other) const {
  415 ConstantRange ConstantRange::subtract(const APInt &Val) const {
  423 ConstantRange ConstantRange::difference(const ConstantRange &CR) const {
  423 ConstantRange ConstantRange::difference(const ConstantRange &CR) const {
  427 static ConstantRange getPreferredRange(
  428     const ConstantRange &CR1, const ConstantRange &CR2,
  428     const ConstantRange &CR1, const ConstantRange &CR2,
  429     ConstantRange::PreferredRangeType Type) {
  430   if (Type == ConstantRange::Unsigned) {
  435   } else if (Type == ConstantRange::Signed) {
  447 ConstantRange ConstantRange::intersectWith(const ConstantRange &CR,
  447 ConstantRange ConstantRange::intersectWith(const ConstantRange &CR,
  553 ConstantRange ConstantRange::unionWith(const ConstantRange &CR,
  553 ConstantRange ConstantRange::unionWith(const ConstantRange &CR,
  626 ConstantRange ConstantRange::castOp(Instruction::CastOps CastOp,
  669 ConstantRange ConstantRange::zeroExtend(uint32_t DstTySize) const {
  686 ConstantRange ConstantRange::signExtend(uint32_t DstTySize) const {
  704 ConstantRange ConstantRange::truncate(uint32_t DstTySize) const {
  712   ConstantRange Union(DstTySize, /*isFullSet=*/false);
  758 ConstantRange ConstantRange::zextOrTrunc(uint32_t DstTySize) const {
  767 ConstantRange ConstantRange::sextOrTrunc(uint32_t DstTySize) const {
  776 ConstantRange ConstantRange::binaryOp(Instruction::BinaryOps BinOp,
  777                                       const ConstantRange &Other) const {
  819 ConstantRange ConstantRange::overflowingBinaryOp(Instruction::BinaryOps BinOp,
  820                                                  const ConstantRange &Other,
  834 ConstantRange
  835 ConstantRange::add(const ConstantRange &Other) const {
  846   ConstantRange X = ConstantRange(std::move(NewLower), std::move(NewUpper));
  854 ConstantRange ConstantRange::addWithNoWrap(const ConstantRange &Other,
  854 ConstantRange ConstantRange::addWithNoWrap(const ConstantRange &Other,
  865   ConstantRange Result = add(Other);
  905 ConstantRange
  906 ConstantRange::sub(const ConstantRange &Other) const {
  917   ConstantRange X = ConstantRange(std::move(NewLower), std::move(NewUpper));
  925 ConstantRange
  926 ConstantRange::multiply(const ConstantRange &Other) const {
  947   ConstantRange Result_zext = ConstantRange(this_min * Other_min,
  949   ConstantRange UR = Result_zext.truncate(getBitWidth());
  973   ConstantRange Result_sext(std::min(L, Compare), std::max(L, Compare) + 1);
  974   ConstantRange SR = Result_sext.truncate(getBitWidth());
  979 ConstantRange
  980 ConstantRange::smax(const ConstantRange &Other) const {
  990 ConstantRange
  991 ConstantRange::umax(const ConstantRange &Other) const {
 1001 ConstantRange
 1002 ConstantRange::smin(const ConstantRange &Other) const {
 1012 ConstantRange
 1013 ConstantRange::umin(const ConstantRange &Other) const {
 1023 ConstantRange
 1024 ConstantRange::udiv(const ConstantRange &RHS) const {
 1044 ConstantRange ConstantRange::sdiv(const ConstantRange &RHS) const {
 1044 ConstantRange ConstantRange::sdiv(const ConstantRange &RHS) const {
 1050   ConstantRange PosFilter(APInt(getBitWidth(), 1), SignedMin);
 1051   ConstantRange NegFilter(SignedMin, Zero);
 1052   ConstantRange PosL = intersectWith(PosFilter);
 1053   ConstantRange NegL = intersectWith(NegFilter);
 1054   ConstantRange PosR = RHS.intersectWith(PosFilter);
 1055   ConstantRange NegR = RHS.intersectWith(NegFilter);
 1057   ConstantRange PosRes = getEmpty();
 1108   ConstantRange NegRes = getEmpty();
 1121   ConstantRange Res = NegRes.unionWith(PosRes, PreferredRangeType::Signed);
 1129 ConstantRange ConstantRange::urem(const ConstantRange &RHS) const {
 1129 ConstantRange ConstantRange::urem(const ConstantRange &RHS) const {
 1142 ConstantRange ConstantRange::srem(const ConstantRange &RHS) const {
 1142 ConstantRange ConstantRange::srem(const ConstantRange &RHS) const {
 1146   ConstantRange AbsRHS = RHS.abs();
 1184 ConstantRange
 1185 ConstantRange::binaryAnd(const ConstantRange &Other) const {
 1195 ConstantRange
 1196 ConstantRange::binaryOr(const ConstantRange &Other) const {
 1206 ConstantRange
 1207 ConstantRange::shl(const ConstantRange &Other) const {
 1231 ConstantRange
 1232 ConstantRange::lshr(const ConstantRange &Other) const {
 1241 ConstantRange
 1242 ConstantRange::ashr(const ConstantRange &Other) const {
 1292 ConstantRange ConstantRange::uadd_sat(const ConstantRange &Other) const {
 1292 ConstantRange ConstantRange::uadd_sat(const ConstantRange &Other) const {
 1301 ConstantRange ConstantRange::sadd_sat(const ConstantRange &Other) const {
 1301 ConstantRange ConstantRange::sadd_sat(const ConstantRange &Other) const {
 1310 ConstantRange ConstantRange::usub_sat(const ConstantRange &Other) const {
 1310 ConstantRange ConstantRange::usub_sat(const ConstantRange &Other) const {
 1319 ConstantRange ConstantRange::ssub_sat(const ConstantRange &Other) const {
 1319 ConstantRange ConstantRange::ssub_sat(const ConstantRange &Other) const {
 1328 ConstantRange ConstantRange::inverse() const {
 1336 ConstantRange ConstantRange::abs() const {
 1367 ConstantRange::OverflowResult ConstantRange::unsignedAddMayOverflow(
 1368     const ConstantRange &Other) const {
 1383 ConstantRange::OverflowResult ConstantRange::signedAddMayOverflow(
 1384     const ConstantRange &Other) const {
 1413 ConstantRange::OverflowResult ConstantRange::unsignedSubMayOverflow(
 1414     const ConstantRange &Other) const {
 1429 ConstantRange::OverflowResult ConstantRange::signedSubMayOverflow(
 1430     const ConstantRange &Other) const {
 1459 ConstantRange::OverflowResult ConstantRange::unsignedMulMayOverflow(
 1460     const ConstantRange &Other) const {
 1494 ConstantRange llvm::getConstantRangeFromMetadata(const MDNode &Ranges) {
 1502   ConstantRange CR(FirstLow->getValue(), FirstHigh->getValue());
lib/IR/Globals.cpp
  302 Optional<ConstantRange> GlobalValue::getAbsoluteSymbolRange() const {
lib/IR/Metadata.cpp
  940 static bool isContiguous(const ConstantRange &A, const ConstantRange &B) {
  940 static bool isContiguous(const ConstantRange &A, const ConstantRange &B) {
  944 static bool canBeMerged(const ConstantRange &A, const ConstantRange &B) {
  944 static bool canBeMerged(const ConstantRange &A, const ConstantRange &B) {
  950   ConstantRange NewRange(Low->getValue(), High->getValue());
  954   ConstantRange LastRange(LB, LE);
  956     ConstantRange Union = LastRange.unionWith(NewRange);
 1037     ConstantRange Range(EndPoints[0]->getValue(), EndPoints[1]->getValue());
lib/IR/Verifier.cpp
 3317 static bool isContiguous(const ConstantRange &A, const ConstantRange &B) {
 3317 static bool isContiguous(const ConstantRange &A, const ConstantRange &B) {
 3330   ConstantRange LastRange(1, true); // Dummy initial value
 3343     ConstantRange CurRange(LowV, HighV);
 3361     ConstantRange FirstRange(FirstLow, FirstHigh);
lib/Target/X86/X86ISelDAGToDAG.cpp
 2386   Optional<ConstantRange> CR =
 2575   Optional<ConstantRange> CR = GA->getGlobal()->getAbsoluteSymbolRange();
 2632   Optional<ConstantRange> CR = GA->getGlobal()->getAbsoluteSymbolRange();
lib/Target/X86/X86Subtarget.cpp
  130     if (Optional<ConstantRange> CR = GV->getAbsoluteSymbolRange()) {
lib/Transforms/InstCombine/InstCombineCompares.cpp
 1496     ConstantRange CR = ConstantRange::makeAllowedICmpRegion(Pred, *C);
 1496     ConstantRange CR = ConstantRange::makeAllowedICmpRegion(Pred, *C);
 1497     ConstantRange DominatingCR =
 1498         (CmpBB == TrueBB) ? ConstantRange::makeExactICmpRegion(DomPred, *DomC)
 1499                           : ConstantRange::makeExactICmpRegion(
 1501     ConstantRange Intersection = DominatingCR.intersectWith(CR);
 1502     ConstantRange Difference = DominatingCR.difference(CR);
 2590   auto CR = ConstantRange::makeExactICmpRegion(Pred, C).subtract(*C2);
 2590   auto CR = ConstantRange::makeExactICmpRegion(Pred, C).subtract(*C2);
lib/Transforms/Instrumentation/BoundsChecking.cpp
   78   auto SizeRange = SE.getUnsignedRange(SE.getSCEV(Size));
   79   auto OffsetRange = SE.getUnsignedRange(SE.getSCEV(Offset));
   80   auto NeededSizeRange = SE.getUnsignedRange(SE.getSCEV(NeededSizeVal));
lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
  435   ConstantRange LRange = LVI->getConstantRange(
  437   ConstantRange RRange = LVI->getConstantRange(
  439   ConstantRange NWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
  439   ConstantRange NWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
  628   ConstantRange OperandRange(OrigWidth, /*isFullSet=*/false);
  760   ConstantRange LRange = LVI->getConstantRange(LHS, BB, BinOp);
  761   ConstantRange RRange = LVI->getConstantRange(RHS, BB, BinOp);
  766     ConstantRange NUWRange = ConstantRange::makeGuaranteedNoWrapRegion(
  766     ConstantRange NUWRange = ConstantRange::makeGuaranteedNoWrapRegion(
  772     ConstantRange NSWRange = ConstantRange::makeGuaranteedNoWrapRegion(
  772     ConstantRange NSWRange = ConstantRange::makeGuaranteedNoWrapRegion(
  795   ConstantRange LRange = LVI->getConstantRange(LHS, BB, BinOp);
lib/Transforms/Scalar/Float2Int.cpp
  149 void Float2IntPass::seen(Instruction *I, ConstantRange R) {
  159 ConstantRange Float2IntPass::badRange() {
  160   return ConstantRange::getFull(MaxIntegerBW + 1);
  162 ConstantRange Float2IntPass::unknownRange() {
  163   return ConstantRange::getEmpty(MaxIntegerBW + 1);
  165 ConstantRange Float2IntPass::validateRange(ConstantRange R) {
  165 ConstantRange Float2IntPass::validateRange(ConstantRange R) {
  207       auto Input = ConstantRange::getFull(BW);
  207       auto Input = ConstantRange::getFull(BW);
  246     std::function<ConstantRange(ArrayRef<ConstantRange>)> Op;
  246     std::function<ConstantRange(ArrayRef<ConstantRange>)> Op;
  258         auto Zero = ConstantRange(APInt::getNullValue(Size));
  297     SmallVector<ConstantRange,4> OpRanges;
  357     ConstantRange R(MaxIntegerBW + 1, false);
lib/Transforms/Scalar/GuardWidening.cpp
  548       ConstantRange CR0 =
  549           ConstantRange::makeExactICmpRegion(Pred0, RHS0->getValue());
  550       ConstantRange CR1 =
  551           ConstantRange::makeExactICmpRegion(Pred1, RHS1->getValue());
  562       auto SubsetIntersect = CR0.inverse().unionWith(CR1.inverse()).inverse();
  563       auto SupersetIntersect = CR0.intersectWith(CR1);
lib/Transforms/Scalar/IndVarSimplify.cpp
 1003   DenseMap<DefUserPair, ConstantRange> PostIncRangeInfos;
 1005   Optional<ConstantRange> getPostIncRangeInfo(Value *Def,
 1017   void updatePostIncRangeInfo(Value *Def, Instruction *UseI, ConstantRange R) {
 1842     auto CmpRHSRange = SE->getSignedRange(SE->getSCEV(CmpRHS));
 1843     auto CmpConstrainedLHSRange =
 1844             ConstantRange::makeAllowedICmpRegion(P, CmpRHSRange);
 1845     auto NarrowDefRange = CmpConstrainedLHSRange.addWithNoWrap(
lib/Transforms/Scalar/JumpThreading.cpp
  869               ConstantRange CR = LVI->getConstantRangeOnEdge(
  875               ConstantRange CmpRange = ConstantRange::makeExactICmpRegion(
  875               ConstantRange CmpRange = ConstantRange::makeExactICmpRegion(
lib/Transforms/Utils/LowerSwitch.cpp
  496     ConstantRange KnownBitsRange =
  497         ConstantRange::fromKnownBits(Known, /*IsSigned=*/false);
  498     const ConstantRange LVIRange = LVI->getConstantRange(Val, OrigBlock, SI);
  499     ConstantRange ValRange = KnownBitsRange.intersectWith(LVIRange);
lib/Transforms/Utils/SimplifyCFG.cpp
  595     ConstantRange Span = ConstantRange::makeAllowedICmpRegion(
  595     ConstantRange Span = ConstantRange::makeAllowedICmpRegion(
lib/Transforms/Utils/SimplifyIndVar.cpp
  770     ConstantRange IVRange = SE->getUnsignedRange(SE->getSCEV(IVOperand));
tools/polly/lib/Analysis/ScopInfo.cpp
  166 static isl::set addRangeBoundsToSet(isl::set S, const ConstantRange &Range,
  746   const ConstantRange &Range = SE->getSignedRange(PtrSCEV);
 1558     ConstantRange SRange = SE->getSignedRange(Parameter);
unittests/IR/ConstantRangeTest.cpp
   22   static ConstantRange Full;
   23   static ConstantRange Empty;
   24   static ConstantRange One;
   25   static ConstantRange Some;
   26   static ConstantRange Wrap;
   38       ConstantRange CR(APInt(Bits, Lo), APInt(Bits, Hi));
   54 static void ForeachNumInConstantRange(const ConstantRange &CR, Fn TestFn) {
   84     ConstantRange CR = RangeFn(CR1, CR2);
   90     ConstantRange Exact = ConstantRange::getNonEmpty(Min, Max + 1);
   90     ConstantRange Exact = ConstantRange::getNonEmpty(Min, Max + 1);
  121     ConstantRange CR = RangeFn(CR1, CR2);
  127     ConstantRange Exact = ConstantRange::getNonEmpty(Min, Max + 1);
  127     ConstantRange Exact = ConstantRange::getNonEmpty(Min, Max + 1);
  136 ConstantRange ConstantRangeTest::Full(16, true);
  137 ConstantRange ConstantRangeTest::Empty(16, false);
  138 ConstantRange ConstantRangeTest::One(APInt(16, 0xa));
  139 ConstantRange ConstantRangeTest::Some(APInt(16, 0xa), APInt(16, 0xaaa));
  140 ConstantRange ConstantRangeTest::Wrap(APInt(16, 0xaaa), APInt(16, 0xa));
  223   ConstantRange OneInverse = One.inverse();
  289   ConstantRange CR1(APInt(8, 42), APInt::getMinValue(8));
  293   ConstantRange CR2(APInt(8, 42), APInt::getSignedMinValue(8));
  299   ConstantRange TFull = Full.truncate(10);
  300   ConstantRange TEmpty = Empty.truncate(10);
  301   ConstantRange TOne = One.truncate(10);
  302   ConstantRange TSome = Some.truncate(10);
  303   ConstantRange TWrap = Wrap.truncate(10);
  312   ConstantRange TwoFive(APInt(3, 2), APInt(3, 5));
  316   ConstantRange TwoSix(APInt(3, 2), APInt(3, 6));
  320   ConstantRange FiveSeven(APInt(3, 5), APInt(3, 7));
  324   ConstantRange SevenOne(APInt(3, 7), APInt(3, 1));
  329   ConstantRange ZFull = Full.zeroExtend(20);
  330   ConstantRange ZEmpty = Empty.zeroExtend(20);
  331   ConstantRange ZOne = One.zeroExtend(20);
  332   ConstantRange ZSome = Some.zeroExtend(20);
  333   ConstantRange ZWrap = Wrap.zeroExtend(20);
  343   ConstantRange FiveZero(APInt(3, 5), APInt(3, 0));
  348   ConstantRange SFull = Full.signExtend(20);
  349   ConstantRange SEmpty = Empty.signExtend(20);
  350   ConstantRange SOne = One.signExtend(20);
  351   ConstantRange SSome = Some.signExtend(20);
  352   ConstantRange SWrap = Wrap.signExtend(20);
  388   ConstantRange LHS(APInt(16, 4), APInt(16, 2));
  389   ConstantRange RHS(APInt(16, 6), APInt(16, 5));
  476         ConstantRange SmallestCR = OpFn(CR1, CR2, ConstantRange::Smallest);
  476         ConstantRange SmallestCR = OpFn(CR1, CR2, ConstantRange::Smallest);
  477         ConstantRange UnsignedCR = OpFn(CR1, CR2, ConstantRange::Unsigned);
  477         ConstantRange UnsignedCR = OpFn(CR1, CR2, ConstantRange::Unsigned);
  478         ConstantRange SignedCR = OpFn(CR1, CR2, ConstantRange::Signed);
  478         ConstantRange SignedCR = OpFn(CR1, CR2, ConstantRange::Signed);
  493             ConstantRange Expected(Lower1, Upper1 + 1);
  501         ConstantRange Variant1(Bits, /*full*/ true);
  502         ConstantRange Variant2(Bits, /*full*/ true);
  604   ConstantRange A(APInt(16, 3), APInt(16, 7));
  605   ConstantRange B(APInt(16, 5), APInt(16, 9));
  606   ConstantRange C(APInt(16, 3), APInt(16, 5));
  607   ConstantRange D(APInt(16, 7), APInt(16, 9));
  608   ConstantRange E(APInt(16, 5), APInt(16, 4));
  609   ConstantRange F(APInt(16, 7), APInt(16, 3));
  651     ConstantRange CR = RangeFn(CR1, CR2);
  673       ConstantRange Exact = ConstantRange::getNonEmpty(Min, Max + 1);
  673       ConstantRange Exact = ConstantRange::getNonEmpty(Min, Max + 1);
  684     ConstantRange CR = RangeFn(CR1, CR2);
  707       ConstantRange Exact = ConstantRange::getNonEmpty(Min, Max + 1);
  707       ConstantRange Exact = ConstantRange::getNonEmpty(Min, Max + 1);
  720         ConstantRange CR = RangeFn(CR1, CR2);
  751           ConstantRange Exact =
  752               ConstantRange::getNonEmpty(SMin, SMax + 1)
  753                   .intersectWith(ConstantRange::getNonEmpty(UMin, UMax + 1));
  943   ConstantRange Zero(APInt(16, 0));
 1068   ConstantRange Zero(APInt(16, 0));
 1101     ConstantRange CR = CR1.sdiv(CR2);
 1110     ConstantRange Envelope = ConstantRange::getNonEmpty(SMin, SMax + 1);
 1110     ConstantRange Envelope = ConstantRange::getNonEmpty(SMin, SMax + 1);
 1130     ConstantRange Wrapped = ConstantRange::getNonEmpty(WMin, WMax + 1);
 1130     ConstantRange Wrapped = ConstantRange::getNonEmpty(WMin, WMax + 1);
 1180   ConstantRange PosMod(APInt(16, 10), APInt(16, 21));  // [10, 20]
 1181   ConstantRange NegMod(APInt(16, -20), APInt(16, -9)); // [-20, -10]
 1182   ConstantRange IntMinMod(APInt::getSignedMinValue(16));
 1184   ConstantRange Expected(16, true);
 1187   ConstantRange PosLargeLHS(APInt(16, 0), APInt(16, 41));
 1191   ConstantRange NegLargeLHS(APInt(16, -40), APInt(16, 1));
 1195   ConstantRange PosNegLargeLHS(APInt(16, -32), APInt(16, 38));
 1201   ConstantRange PosLHS(APInt(16, 0), APInt(16, 16));
 1205   ConstantRange NegLHS(APInt(16, -15), APInt(16, 1));
 1209   ConstantRange PosNegLHS(APInt(16, -12), APInt(16, 18));
 1215   ConstantRange PosSmallLHS(APInt(16, 3), APInt(16, 8));
 1219   ConstantRange NegSmallLHS(APInt(16, -7), APInt(16, -2));
 1223   ConstantRange PosNegSmallLHS(APInt(16, -3), APInt(16, 8));
 1245   ConstantRange Some2(APInt(16, 0xfff), APInt(16, 0x8000));
 1246   ConstantRange WrapNullMax(APInt(16, 0x1), APInt(16, 0x0));
 1295   ConstantRange Small(APInt(16, 0xa), APInt(16, 0xb));
 1312   ConstantRange Neg(APInt(16, 0xf3f0, true), APInt(16, 0xf7f8, true));
 1319   ConstantRange SMax = ConstantRange(APInt::getSignedMaxValue(32));
 1325   ConstantRange LowHalf(APInt(8, 0), APInt(8, 128));
 1326   ConstantRange HighHalf(APInt(8, 128), APInt(8, 0));
 1327   ConstantRange EmptySet(8, /* isFullSet = */ false);
 1339   ConstantRange UnsignedSample(APInt(8, 5), APInt(8, 200));
 1357   ConstantRange SignedSample(APInt(8, -5), APInt(8, 5));
 1384     auto NUWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
 1384     auto NUWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
 1389     auto NSWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
 1389     auto NSWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
 1412     auto NUWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
 1412     auto NUWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
 1417     auto NSWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
 1417     auto NSWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
 1437   auto NSWForAllValues = ConstantRange::makeGuaranteedNoWrapRegion(
 1437   auto NSWForAllValues = ConstantRange::makeGuaranteedNoWrapRegion(
 1443   NSWForAllValues = ConstantRange::makeGuaranteedNoWrapRegion(
 1449   auto NUWForAllValues = ConstantRange::makeGuaranteedNoWrapRegion(
 1449   auto NUWForAllValues = ConstantRange::makeGuaranteedNoWrapRegion(
 1455   NUWForAllValues = ConstantRange::makeGuaranteedNoWrapRegion(
 1470   ConstantRange OneToFive(APInt(32, 1), APInt(32, 6));
 1486   ConstantRange MinusFiveToMinusTwo(APInt(32, -5), APInt(32, -1));
 1503   ConstantRange MinusOneToOne(APInt(32, -1), APInt(32, 2));
 1520   ConstantRange One(APInt(32, 1), APInt(32, 2));
 1536   ConstantRange OneLessThanBitWidth(APInt(32, 0), APInt(32, 31) + 1);
 1537   ConstantRange UpToBitWidth(APInt(32, 0), APInt(32, 32) + 1);
 1564   ConstantRange IllegalShAmt(APInt(32, 32), APInt(32, 0) + 1);
 1609     ConstantRange NoWrap =
 1610         ConstantRange::makeGuaranteedNoWrapRegion(BinOp, CR, NoWrapKind);
 1611     ConstantRange Full = ConstantRange::getFull(Bits);
 1611     ConstantRange Full = ConstantRange::getFull(Bits);
 1789   ConstantRange Zero(APInt::getNullValue(16));
 1801   ConstantRange A(APInt(16, 0xfd00), APInt(16, 0xfe00));
 1802   ConstantRange B1(APInt(16, 0x0100), APInt(16, 0x0201));
 1803   ConstantRange B2(APInt(16, 0x0100), APInt(16, 0x0202));
 1809   ConstantRange C1(APInt(16, 0x0299), APInt(16, 0x0400));
 1810   ConstantRange C2(APInt(16, 0x0300), APInt(16, 0x0400));
 1823   ConstantRange Zero(APInt::getNullValue(16));
 1824   ConstantRange Max(APInt::getAllOnesValue(16));
 1836   ConstantRange A(APInt(16, 0x0000), APInt(16, 0x0100));
 1837   ConstantRange B(APInt(16, 0x0100), APInt(16, 0x0200));
 1841   ConstantRange A1(APInt(16, 0x0000), APInt(16, 0x0101));
 1842   ConstantRange B1(APInt(16, 0x0100), APInt(16, 0x0201));
 1846   ConstantRange A2(APInt(16, 0x0000), APInt(16, 0x0102));
 1847   ConstantRange B2(APInt(16, 0x0100), APInt(16, 0x0202));
 1858   ConstantRange Zero(APInt::getNullValue(16));
 1870   ConstantRange A(APInt(16, 0x7d00), APInt(16, 0x7e00));
 1871   ConstantRange B1(APInt(16, 0x0100), APInt(16, 0x0201));
 1872   ConstantRange B2(APInt(16, 0x0100), APInt(16, 0x0202));
 1875   ConstantRange B3(APInt(16, 0x8000), APInt(16, 0x0201));
 1876   ConstantRange B4(APInt(16, 0x8000), APInt(16, 0x0202));
 1879   ConstantRange B5(APInt(16, 0x0299), APInt(16, 0x0400));
 1880   ConstantRange B6(APInt(16, 0x0300), APInt(16, 0x0400));
 1884   ConstantRange C(APInt(16, 0x8200), APInt(16, 0x8300));
 1885   ConstantRange D1(APInt(16, 0xfe00), APInt(16, 0xff00));
 1886   ConstantRange D2(APInt(16, 0xfd99), APInt(16, 0xff00));
 1889   ConstantRange D3(APInt(16, 0xfe00), APInt(16, 0x8000));
 1890   ConstantRange D4(APInt(16, 0xfd99), APInt(16, 0x8000));
 1893   ConstantRange D5(APInt(16, 0xfc00), APInt(16, 0xfd02));
 1894   ConstantRange D6(APInt(16, 0xfc00), APInt(16, 0xfd01));
 1898   ConstantRange E(APInt(16, 0xff00), APInt(16, 0x0100));
 1900   ConstantRange F(APInt(16, 0xf000), APInt(16, 0x7000));
 1910   ConstantRange Zero(APInt::getNullValue(16));
 1920   ConstantRange A(APInt(16, 0x7d00), APInt(16, 0x7e00));
 1921   ConstantRange B1(APInt(16, 0xfe00), APInt(16, 0xff00));
 1922   ConstantRange B2(APInt(16, 0xfd99), APInt(16, 0xff00));
 1925   ConstantRange B3(APInt(16, 0xfc00), APInt(16, 0xfd02));
 1926   ConstantRange B4(APInt(16, 0xfc00), APInt(16, 0xfd01));
 1930   ConstantRange C(APInt(16, 0x8200), APInt(16, 0x8300));
 1931   ConstantRange D1(APInt(16, 0x0100), APInt(16, 0x0201));
 1932   ConstantRange D2(APInt(16, 0x0100), APInt(16, 0x0202));
 1935   ConstantRange D3(APInt(16, 0x0299), APInt(16, 0x0400));
 1936   ConstantRange D4(APInt(16, 0x0300), APInt(16, 0x0400));
 1940   ConstantRange E(APInt(16, 0xff00), APInt(16, 0x0100));
 1942   ConstantRange F(APInt(16, 0xf000), APInt(16, 0x7001));
 1972     ConstantRange::OverflowResult OR = MayOverflowFn(CR1, CR2);
 1974     case ConstantRange::OverflowResult::AlwaysOverflowsLow:
 1979     case ConstantRange::OverflowResult::AlwaysOverflowsHigh:
 1984     case ConstantRange::OverflowResult::NeverOverflows:
 1989     case ConstantRange::OverflowResult::MayOverflow:
 2078   ConstantRange Unsigned(APInt(8, 66), APInt(8, 219 + 1));
 2079   ConstantRange Signed(APInt(8, 194), APInt(8, 91 + 1));
 2086   ConstantRange CR1(APInt(8, 164), APInt(8, 237 + 1));
 2093   ConstantRange CR2(APInt(8, 68), APInt(8, 110 + 1));
 2124       ConstantRange UnsignedCR(MinUnsigned, MaxUnsigned + 1);
 2125       ConstantRange SignedCR(MinSigned, MaxSigned + 1);
 2214     ConstantRange AbsCR = CR.abs();
 2220     ConstantRange Exact = ConstantRange::getNonEmpty(Min, Max + 1);
 2220     ConstantRange Exact = ConstantRange::getNonEmpty(Min, Max + 1);
usr/include/c++/7.4.0/bits/alloc_traits.h
  387       using allocator_type = allocator<_Tp>;
  389       using value_type = _Tp;
  392       using pointer = _Tp*;
  395       using const_pointer = const _Tp*;
usr/include/c++/7.4.0/bits/allocator.h
  108     class allocator: public __allocator_base<_Tp>
  113       typedef _Tp*       pointer;
  114       typedef const _Tp* const_pointer;
  115       typedef _Tp&       reference;
  116       typedef const _Tp& const_reference;
  117       typedef _Tp        value_type;
  137 	allocator(const allocator<_Tp1>&) throw() { }
usr/include/c++/7.4.0/bits/move.h
   46     inline _GLIBCXX_CONSTEXPR _Tp*
   47     __addressof(_Tp& __r) _GLIBCXX_NOEXCEPT
   72     constexpr _Tp&&
   73     forward(typename std::remove_reference<_Tp>::type& __t) noexcept
   83     constexpr _Tp&&
   84     forward(typename std::remove_reference<_Tp>::type&& __t) noexcept
   98     move(_Tp&& __t) noexcept
  136     inline _GLIBCXX17_CONSTEXPR _Tp*
  137     addressof(_Tp& __r) noexcept
  143     const _Tp* addressof(const _Tp&&) = delete;
  143     const _Tp* addressof(const _Tp&&) = delete;
usr/include/c++/7.4.0/bits/std_function.h
   62     : std::unary_function<_T1, _Res> { };
   67     : std::binary_function<_T1, _T2, _Res> { };
  298       static _Res
  299       _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args)
  390     : public _Maybe_unary_or_binary_function<_Res, _ArgTypes...>,
  395 	struct _Callable : __check_func_return_type<_Res2, _Res> { };
  395 	struct _Callable : __check_func_return_type<_Res2, _Res> { };
  406       typedef _Res result_type;
  595       _Res operator()(_ArgTypes... __args) const;
  628       using _Invoker_type = _Res (*)(const _Any_data&, _ArgTypes&&...);
  628       using _Invoker_type = _Res (*)(const _Any_data&, _ArgTypes&&...);
  689 	typedef _Function_handler<_Res(_ArgTypes...), _Functor> _My_handler;
usr/include/c++/7.4.0/bits/stl_construct.h
   74     _Construct(_T1* __p, _Args&&... __args)
   74     _Construct(_T1* __p, _Args&&... __args)
   75     { ::new(static_cast<void*>(__p)) _T1(std::forward<_Args>(__args)...); }
   75     { ::new(static_cast<void*>(__p)) _T1(std::forward<_Args>(__args)...); }
   97     _Destroy(_Tp* __pointer)
usr/include/c++/7.4.0/bits/stl_function.h
  111       typedef _Result 	result_type;  
  127       typedef _Result 	result_type;
usr/include/c++/7.4.0/bits/stl_iterator_base_types.h
  181       typedef _Tp                         value_type;
  183       typedef _Tp*                        pointer;
  184       typedef _Tp&                        reference;
usr/include/c++/7.4.0/bits/stl_pair.h
  101 		      is_constructible<_T2, const _U2&>>::value;
  101 		      is_constructible<_T2, const _U2&>>::value;
  108 		      is_convertible<const _U2&, _T2>>::value;
  108 		      is_convertible<const _U2&, _T2>>::value;
  115 		      is_constructible<_T2, _U2&&>>::value;
  115 		      is_constructible<_T2, _U2&&>>::value;
  122 		      is_convertible<_U2&&, _T2>>::value;
  122 		      is_convertible<_U2&&, _T2>>::value;
  129 				  is_convertible<_U2&&, _T2>>;
  129 				  is_convertible<_U2&&, _T2>>;
  134 		      is_constructible<_T2, _U2&&>,
  134 		      is_constructible<_T2, _U2&&>,
  143 				  is_convertible<const _U2&, _T2>>;
  143 				  is_convertible<const _U2&, _T2>>;
  148 		      is_constructible<_T2, const _U2&&>,
  148 		      is_constructible<_T2, const _U2&&>,
  209     : private __pair_base<_T1, _T2>
  212       typedef _T2 second_type;   /// @c second_type is the second bound type
  215       _T2 second;                /// @c second is a copy of the second object
  252       using _PCCP = _PCC<true, _T1, _T2>;
  260       constexpr pair(const _T1& __a, const _T2& __b)
  269       explicit constexpr pair(const _T1& __a, const _T2& __b)
  283 			    _T1, _T2>;
  311        constexpr pair(_U1&& __x, const _T2& __y)
  318        explicit constexpr pair(_U1&& __x, const _T2& __y)
  325        constexpr pair(const _T1& __x, _U2&& __y)
  341 	constexpr pair(_U1&& __x, _U2&& __y)
  342 	: first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { }
  380 		       is_copy_assignable<_T2>>::value,
  391 		       is_move_assignable<_T2>>::value,
  403 				is_assignable<_T2&, const _U2&>>::value,
  403 				is_assignable<_T2&, const _U2&>>::value,
  405 	operator=(const pair<_U1, _U2>& __p)
  414 				is_assignable<_T2&, _U2&&>>::value,
  414 				is_assignable<_T2&, _U2&&>>::value,
  416 	operator=(pair<_U1, _U2>&& __p)
  523                    typename __decay_and_strip<_T2>::__type>
  524     make_pair(_T1&& __x, _T2&& __y)
  527       typedef typename __decay_and_strip<_T2>::__type __ds_type2;
  529       return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y));
usr/include/c++/7.4.0/bits/stl_vector.h
   77 	rebind<_Tp>::other _Tp_alloc_type;
  216     class vector : protected _Vector_base<_Tp, _Alloc>
  227       typedef _Vector_base<_Tp, _Alloc>			_Base;
  232       typedef _Tp					value_type;
  919       _Tp*
  923       const _Tp*
usr/include/c++/7.4.0/ext/alloc_traits.h
  117       { typedef typename _Base_type::template rebind_alloc<_Tp> other; };
usr/include/c++/7.4.0/ext/new_allocator.h
   63       typedef _Tp*       pointer;
   64       typedef const _Tp* const_pointer;
   65       typedef _Tp&       reference;
   66       typedef const _Tp& const_reference;
   67       typedef _Tp        value_type;
usr/include/c++/7.4.0/initializer_list
   50       typedef _E 		value_type;
   51       typedef const _E& 	reference;
   52       typedef const _E& 	const_reference;
   54       typedef const _E* 	iterator;
   55       typedef const _E* 	const_iterator;
usr/include/c++/7.4.0/type_traits
  194     { typedef _Tp type; };
  215     : public __is_void_helper<typename remove_cv<_Tp>::type>::type
  326     : public __is_integral_helper<typename remove_cv<_Tp>::type>::type
  354     : public __is_floating_point_helper<typename remove_cv<_Tp>::type>::type
  381     : public __is_pointer_helper<typename remove_cv<_Tp>::type>::type
  567     : public __is_null_pointer_helper<typename remove_cv<_Tp>::type>::type
  581     : public __or_<is_lvalue_reference<_Tp>,
  582                    is_rvalue_reference<_Tp>>::type
  588     : public __or_<is_integral<_Tp>, is_floating_point<_Tp>>::type
  588     : public __or_<is_integral<_Tp>, is_floating_point<_Tp>>::type
  601     : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
  601     : public __not_<__or_<is_function<_Tp>, is_reference<_Tp>,
  602                           is_void<_Tp>>>::type
  611     : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
  611     : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
  611     : public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>,
  612                    is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
  612                    is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type
  631     : public __is_member_pointer_helper<typename remove_cv<_Tp>::type>::type
  638     : public __or_<is_object<_Tp>, is_reference<_Tp>>::type
  638     : public __or_<is_object<_Tp>, is_reference<_Tp>>::type
  777     : public __and_<is_array<_Tp>, __not_<extent<_Tp>>>
  777     : public __and_<is_array<_Tp>, __not_<extent<_Tp>>>
  798       typedef decltype(__test<_Tp>(0)) type;
  811                remove_all_extents<_Tp>::type>::type
  825     : public __is_destructible_safe<_Tp>::type
  889       typedef decltype(__test<_Tp>(0)) type;
  894     : public __and_<__not_<is_void<_Tp>>,
  895                     __is_default_constructible_impl<_Tp>>
  915     : public __is_default_constructible_atom<_Tp>::type
  921     : public __is_default_constructible_safe<_Tp>::type
  984       typedef decltype(__test<_Tp, _Arg>(0)) type;
  989     : public __and_<is_destructible<_Tp>,
  990                     __is_direct_constructible_impl<_Tp, _Arg>>
 1072 			 __is_direct_constructible_ref_cast<_Tp, _Arg>,
 1073 			 __is_direct_constructible_new_safe<_Tp, _Arg>
 1079     : public __is_direct_constructible_new<_Tp, _Arg>::type
 1119     : public __is_direct_constructible<_Tp, _Arg>
 1130     : public __is_constructible_impl<_Tp, _Args...>::type
 1142     : public is_constructible<_Tp, const _Tp&>
 1142     : public is_constructible<_Tp, const _Tp&>
 1148     : public __is_copy_constructible_impl<_Tp>
 1160     : public is_constructible<_Tp, _Tp&&>
 1160     : public is_constructible<_Tp, _Tp&&>
 1166     : public __is_move_constructible_impl<_Tp>
 1286     : public is_assignable<_Tp&, const _Tp&>
 1286     : public is_assignable<_Tp&, const _Tp&>
 1292     : public __is_copy_assignable_impl<_Tp>
 1304     : public is_assignable<_Tp&, _Tp&&>
 1304     : public is_assignable<_Tp&, _Tp&&>
 1310     : public __is_move_assignable_impl<_Tp>
 1400       : public __and_<is_default_constructible<_Tp>,
 1401                       __is_implicitly_default_constructible_safe<_Tp>>
 1526 	static void __test_aux(_To1);
 1538       typedef decltype(__test<_From, _To>(0)) type;
 1545     : public __is_convertible_helper<_From, _To>::type
 1554     { typedef _Tp     type; };
 1563     { typedef _Tp     type; };
 1574       remove_const<typename remove_volatile<_Tp>::type>::type     type;
 1629     { typedef _Tp   type; };
 1633     { typedef _Tp   type; };
 1659     { typedef _Tp&&   type; };
 1955     { typedef _Tp     type; };
 2104     { typedef typename remove_cv<_Up>::type __type; };
 2118       typedef typename remove_reference<_Tp>::type __remove_type;
 2131       typedef _Tp __type;
 2144 	typename decay<_Tp>::type>::__type __type;
 2277     struct __result_of_success : __success_type<_Tp>
 2427       static __result_of_success<decltype(
utils/unittest/googletest/include/gtest/gtest-printers.h
  223 void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) {
  276   static ::std::string Format(const ToPrint& value) {
  351     const T1& value, const T2& /* other_operand */) {
  351     const T1& value, const T2& /* other_operand */) {
  352   return FormatForComparison<T1, T2>::Format(value);
  352   return FormatForComparison<T1, T2>::Format(value);
  366 void UniversalPrint(const T& value, ::std::ostream* os);
  373                     const C& container, ::std::ostream* os) {
  439                     const T& value, ::std::ostream* os) {
  455 void PrintTo(const T& value, ::std::ostream* os) {
  478   DefaultPrintTo(IsContainerTest<T>(0), is_pointer<T>(), value, os);
  699   static void Print(const T& value, ::std::ostream* os) {
  784   static void Print(const T& value, ::std::ostream* os) {
  856   typedef T T1;
  983   internal::UniversalTersePrinter<T>::Print(value, &ss);
utils/unittest/googletest/include/gtest/gtest.h
 1377                                    const T1& lhs, const T2& rhs) {
 1377                                    const T1& lhs, const T2& rhs) {
 1389                             const T1& lhs,
 1390                             const T2& rhs) {
 1419                                  const T1& lhs,
 1420                                  const T2& rhs) {
 1487                                    const T1& val1, const T2& val2,
 1487                                    const T1& val1, const T2& val2,
utils/unittest/googletest/include/gtest/internal/custom/raw-ostream.h
   35 auto printable(const T &V) -> decltype(StreamSwitch<T>::printable(V)) {
   35 auto printable(const T &V) -> decltype(StreamSwitch<T>::printable(V)) {
   37   return StreamSwitch<T>::printable(V);
   54   const T& V;
   55   friend std::ostream &operator<<(std::ostream &S, const RawStreamProxy<T> &V) {
   69   static const RawStreamProxy<T> printable(const T &V) { return {V}; }
   69   static const RawStreamProxy<T> printable(const T &V) { return {V}; }
utils/unittest/googletest/include/gtest/internal/gtest-internal.h
   94 ::std::string PrintToString(const T& value);