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

Declarations

tools/clang/include/clang/AST/APValue.h
   26   class CharUnits;
tools/clang/include/clang/AST/ASTContext.h
   91 class CharUnits;
tools/clang/lib/CodeGen/CodeGenModule.h
   62 class CharUnits;
tools/lldb/source/Plugins/SymbolFile/PDB/PDBASTParser.h
   19 class CharUnits;

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 {
  468   ArrayRef<T> makeArrayRef(const SmallVectorImpl<T> &Vec) {
  468   ArrayRef<T> makeArrayRef(const SmallVectorImpl<T> &Vec) {
  474   ArrayRef<T> makeArrayRef(const SmallVector<T, N> &Vec) {
  474   ArrayRef<T> makeArrayRef(const SmallVector<T, N> &Vec) {
include/llvm/ADT/DenseMap.h
   40 struct DenseMapPair : public std::pair<KeyT, ValueT> {
   40 struct DenseMapPair : public std::pair<KeyT, ValueT> {
   43   KeyT &getFirst() { return std::pair<KeyT, ValueT>::first; }
   44   const KeyT &getFirst() const { return std::pair<KeyT, ValueT>::first; }
   45   ValueT &getSecond() { return std::pair<KeyT, ValueT>::second; }
   46   const ValueT &getSecond() const { return std::pair<KeyT, ValueT>::second; }
   65   using key_type = KeyT;
   66   using mapped_type = ValueT;
   69   using iterator = DenseMapIterator<KeyT, ValueT, KeyInfoT, BucketT>;
   69   using iterator = DenseMapIterator<KeyT, ValueT, KeyInfoT, BucketT>;
   71       DenseMapIterator<KeyT, ValueT, KeyInfoT, BucketT, true>;
   71       DenseMapIterator<KeyT, ValueT, KeyInfoT, BucketT, true>;
  123         is_trivially_copyable<ValueT>::value) {
  145   size_type count(const_arg_type_t<KeyT> Val) const {
  150   iterator find(const_arg_type_t<KeyT> Val) {
  156   const_iterator find(const_arg_type_t<KeyT> Val) const {
  185   ValueT lookup(const_arg_type_t<KeyT> Val) const {
  185   ValueT lookup(const_arg_type_t<KeyT> Val) const {
  195   std::pair<iterator, bool> insert(const std::pair<KeyT, ValueT> &KV) {
  195   std::pair<iterator, bool> insert(const std::pair<KeyT, ValueT> &KV) {
  202   std::pair<iterator, bool> insert(std::pair<KeyT, ValueT> &&KV) {
  202   std::pair<iterator, bool> insert(std::pair<KeyT, ValueT> &&KV) {
  210   std::pair<iterator, bool> try_emplace(KeyT &&Key, Ts &&... Args) {
  219         InsertIntoBucket(TheBucket, std::move(Key), std::forward<Ts>(Args)...);
  229   std::pair<iterator, bool> try_emplace(const KeyT &Key, Ts &&... Args) {
  249   std::pair<iterator, bool> insert_as(std::pair<KeyT, ValueT> &&KV,
  249   std::pair<iterator, bool> insert_as(std::pair<KeyT, ValueT> &&KV,
  272   bool erase(const KeyT &Val) {
  291   value_type& FindAndConstruct(const KeyT &Key) {
  299   ValueT &operator[](const KeyT &Key) {
  299   ValueT &operator[](const KeyT &Key) {
  303   value_type& FindAndConstruct(KeyT &&Key) {
  311   ValueT &operator[](KeyT &&Key) {
  311   ValueT &operator[](KeyT &&Key) {
  334     const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
  349     const KeyT EmptyKey = getEmptyKey();
  351       ::new (&B->getFirst()) KeyT(EmptyKey);
  369     const KeyT EmptyKey = getEmptyKey();
  370     const KeyT TombstoneKey = getTombstoneKey();
  380         ::new (&DestBucket->getSecond()) ValueT(std::move(B->getSecond()));
  392       const DenseMapBase<OtherBaseT, KeyT, ValueT, KeyInfoT, BucketT> &other) {
  392       const DenseMapBase<OtherBaseT, KeyT, ValueT, KeyInfoT, BucketT> &other) {
  400         is_trivially_copyable<ValueT>::value)
  410               ValueT(other.getBuckets()[i].getSecond());
  414   static unsigned getHashValue(const KeyT &Val) {
  419   static unsigned getHashValue(const LookupKeyT &Val) {
  423   static const KeyT getEmptyKey() {
  429   static const KeyT getTombstoneKey() {
  447     if (shouldReverseIterate<KeyT>()) {
  515   BucketT *InsertIntoBucket(BucketT *TheBucket, KeyArg &&Key,
  516                             ValueArgs &&... Values) {
  520     ::new (&TheBucket->getSecond()) ValueT(std::forward<ValueArgs>(Values)...);
  520     ::new (&TheBucket->getSecond()) ValueT(std::forward<ValueArgs>(Values)...);
  525   BucketT *InsertIntoBucketWithLookup(BucketT *TheBucket, KeyT &&Key,
  526                                       ValueT &&Value, LookupKeyT &Lookup) {
  535   BucketT *InsertIntoBucketImpl(const KeyT &Key, const LookupKeyT &Lookup,
  535   BucketT *InsertIntoBucketImpl(const KeyT &Key, const LookupKeyT &Lookup,
  566     const KeyT EmptyKey = getEmptyKey();
  578   bool LookupBucketFor(const LookupKeyT &Val,
  590     const KeyT EmptyKey = getEmptyKey();
  591     const KeyT TombstoneKey = getTombstoneKey();
  629   bool LookupBucketFor(const LookupKeyT &Val, BucketT *&FoundBucket) {
  684 class DenseMap : public DenseMapBase<DenseMap<KeyT, ValueT, KeyInfoT, BucketT>,
  684 class DenseMap : public DenseMapBase<DenseMap<KeyT, ValueT, KeyInfoT, BucketT>,
  685                                      KeyT, ValueT, KeyInfoT, BucketT> {
  685                                      KeyT, ValueT, KeyInfoT, BucketT> {
  690   using BaseT = DenseMapBase<DenseMap, KeyT, ValueT, KeyInfoT, BucketT>;
  690   using BaseT = DenseMapBase<DenseMap, KeyT, ValueT, KeyInfoT, BucketT>;
 1163   using ConstIterator = DenseMapIterator<KeyT, ValueT, KeyInfoT, Bucket, true>;
 1163   using ConstIterator = DenseMapIterator<KeyT, ValueT, KeyInfoT, Bucket, true>;
 1186     if (shouldReverseIterate<KeyT>()) {
 1199       const DenseMapIterator<KeyT, ValueT, KeyInfoT, Bucket, IsConstSrc> &I)
 1199       const DenseMapIterator<KeyT, ValueT, KeyInfoT, Bucket, IsConstSrc> &I)
 1210     if (shouldReverseIterate<KeyT>())
 1249     const KeyT Empty = KeyInfoT::getEmptyKey();
 1250     const KeyT Tombstone = KeyInfoT::getTombstoneKey();
 1259     const KeyT Empty = KeyInfoT::getEmptyKey();
 1260     const KeyT Tombstone = KeyInfoT::getTombstoneKey();
include/llvm/ADT/DenseMapInfo.h
  186   using Pair = std::pair<T, U>;
  188   using SecondInfo = DenseMapInfo<U>;
include/llvm/ADT/Optional.h
  144     T value;
  160   explicit OptionalStorage(in_place_t, Args &&... args)
  161       : value(std::forward<Args>(args)...), hasVal(true) {}
  172   T &getValue() LLVM_LVALUE_FUNCTION noexcept {
  176   T const &getValue() const LLVM_LVALUE_FUNCTION noexcept {
  181   T &&getValue() && noexcept {
  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/STLExtras.h
  108   Ret (*callback)(intptr_t callable, Params ...params) = nullptr;
  112   static Ret callback_fn(intptr_t callable, Params ...params) {
  114         std::forward<Params>(params)...);
  129   Ret operator()(Params ...params) const {
  130     return callback(callable, std::forward<Params>(params)...);
  211              typename std::remove_reference<FuncReturnTy>::type> {
  218   FuncReturnTy operator*() { return F(*this->I); }
 1042 inline int (*get_array_pod_sort_comparator(const T &))
 1044   return array_pod_sort_comparator<T>;
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 *;
  259 class SmallVectorTemplateBase<T, true> : public SmallVectorTemplateCommon<T> {
  264   static void destroy_range(T *, T *) {}
  264   static void destroy_range(T *, T *) {}
  286       T1 *I, T1 *E, T2 *Dest,
  286       T1 *I, T1 *E, T2 *Dest,
  286       T1 *I, T1 *E, T2 *Dest,
  287       typename std::enable_if<std::is_same<typename std::remove_const<T1>::type,
  288                                            T2>::value>::type * = nullptr) {
  294       memcpy(reinterpret_cast<void *>(Dest), I, (E - I) * sizeof(T));
  299   void grow(size_t MinSize = 0) { this->grow_pod(MinSize, sizeof(T)); }
  302   void push_back(const T &Elt) {
  305     memcpy(reinterpret_cast<void *>(this->end()), &Elt, 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) {
  606       T *OldEnd = this->end();
  621     T *OldEnd = this->end();
  627     for (T *J = I; NumOverwritten > 0; --NumOverwritten) {
  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/ADT/StringMap.h
  134   StringMapEntryStorage(size_t strLen, InitTy &&... InitVals)
  160   using StringMapEntryStorage<ValueTy>::StringMapEntryStorage;
  179                                 InitTy &&... InitVals) {
  204   static StringMapEntry *Create(StringRef Key, InitType &&... InitVal) {
  432   std::pair<iterator, bool> try_emplace(StringRef Key, ArgsTy &&... Args) {
include/llvm/ADT/iterator.h
   68     : public std::iterator<IteratorCategoryT, T, DifferenceTypeT, PointerT,
  206     : public iterator_facade_base<DerivedT, IteratorCategoryT, T,
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
   65   using type = const T &;
   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;
tools/clang/include/clang/AST/APValue.h
  306   APValue(LValueBase B, const CharUnits &O, NoLValuePath N,
  311   APValue(LValueBase B, const CharUnits &O, ArrayRef<LValuePathEntry> Path,
  443   CharUnits &getLValueOffset();
  444   const CharUnits &getLValueOffset() const {
  576   void setLValue(LValueBase B, const CharUnits &O, NoLValuePath,
  578   void setLValue(LValueBase B, const CharUnits &O,
tools/clang/include/clang/AST/ASTContext.h
 1848   CharUnits getObjCEncodingTypeSize(QualType T) const;
 2097   CharUnits toCharUnitsFromBits(int64_t BitSize) const;
 2100   int64_t toBits(CharUnits CharSize) const;
 2104   CharUnits getTypeSizeInChars(QualType T) const;
 2105   CharUnits getTypeSizeInChars(const Type *T) const;
 2107   Optional<CharUnits> getTypeSizeInCharsIfKnown(QualType Ty) const {
 2113   Optional<CharUnits> getTypeSizeInCharsIfKnown(const Type *Ty) const {
 2139   CharUnits getTypeAlignInChars(QualType T) const;
 2140   CharUnits getTypeAlignInChars(const Type *T) const;
 2145   CharUnits getTypeUnadjustedAlignInChars(QualType T) const;
 2146   CharUnits getTypeUnadjustedAlignInChars(const Type *T) const;
 2150   std::pair<CharUnits, CharUnits> getTypeInfoDataSizeInChars(QualType T) const;
 2150   std::pair<CharUnits, CharUnits> getTypeInfoDataSizeInChars(QualType T) const;
 2152   std::pair<CharUnits, CharUnits> getTypeInfoInChars(const Type *T) const;
 2152   std::pair<CharUnits, CharUnits> getTypeInfoInChars(const Type *T) const;
 2153   std::pair<CharUnits, CharUnits> getTypeInfoInChars(QualType T) const;
 2153   std::pair<CharUnits, CharUnits> getTypeInfoInChars(QualType T) const;
 2177   CharUnits getAlignOfGlobalVarInChars(QualType T) const;
 2189   CharUnits getDeclAlign(const Decl *D, bool ForAlignof = false) const;
 2194   CharUnits getExnObjectAlignment() const {
 2249   CharUnits getOffsetOfBaseWithVBPtr(const CXXRecordDecl *RD) const;
tools/clang/include/clang/AST/BaseSubobject.h
   35   CharUnits BaseOffset;
   39   BaseSubobject(const CXXRecordDecl *Base, CharUnits BaseOffset)
   46   CharUnits getBaseOffset() const { return BaseOffset; }
   61       clang::CharUnits::fromQuantity(DenseMapInfo<int64_t>::getEmptyKey()));
   67       clang::CharUnits::fromQuantity(DenseMapInfo<int64_t>::getTombstoneKey()));
   71     using PairTy = std::pair<const clang::CXXRecordDecl *, clang::CharUnits>;
tools/clang/include/clang/AST/CharUnits.h
   53       static CharUnits Zero() {
   58       static CharUnits One() {
   63       static CharUnits fromQuantity(QuantityType Quantity) {
   68       CharUnits& operator+= (const CharUnits &Other) {
   68       CharUnits& operator+= (const CharUnits &Other) {
   72       CharUnits& operator++ () {
   76       CharUnits operator++ (int) {
   79       CharUnits& operator-= (const CharUnits &Other) {
   79       CharUnits& operator-= (const CharUnits &Other) {
   83       CharUnits& operator-- () {
   87       CharUnits operator-- (int) {
   92       bool operator== (const CharUnits &Other) const {
   95       bool operator!= (const CharUnits &Other) const {
  100       bool operator<  (const CharUnits &Other) const {
  103       bool operator<= (const CharUnits &Other) const {
  106       bool operator>  (const CharUnits &Other) const {
  109       bool operator>= (const CharUnits &Other) const {
  137       bool isMultipleOf(CharUnits N) const {
  142       CharUnits operator* (QuantityType N) const {
  145       CharUnits &operator*= (QuantityType N) {
  149       CharUnits operator/ (QuantityType N) const {
  152       CharUnits &operator/= (QuantityType N) {
  156       QuantityType operator/ (const CharUnits &Other) const {
  159       CharUnits operator% (QuantityType N) const {
  162       QuantityType operator% (const CharUnits &Other) const {
  165       CharUnits operator+ (const CharUnits &Other) const {
  165       CharUnits operator+ (const CharUnits &Other) const {
  168       CharUnits operator- (const CharUnits &Other) const {
  168       CharUnits operator- (const CharUnits &Other) const {
  171       CharUnits operator- () const {
  188       CharUnits alignTo(const CharUnits &Align) const {
  188       CharUnits alignTo(const CharUnits &Align) const {
  194       CharUnits alignmentAtOffset(CharUnits offset) const {
  194       CharUnits alignmentAtOffset(CharUnits offset) const {
  201       CharUnits alignmentOfArrayElement(CharUnits elementSize) const {
  201       CharUnits alignmentOfArrayElement(CharUnits elementSize) const {
  212 inline clang::CharUnits operator* (clang::CharUnits::QuantityType Scale,
  212 inline clang::CharUnits operator* (clang::CharUnits::QuantityType Scale,
  213                                    const clang::CharUnits &CU) {
  220   static clang::CharUnits getEmptyKey() {
  221     clang::CharUnits::QuantityType Quantity =
  222       DenseMapInfo<clang::CharUnits::QuantityType>::getEmptyKey();
  224     return clang::CharUnits::fromQuantity(Quantity);
  227   static clang::CharUnits getTombstoneKey() {
  228     clang::CharUnits::QuantityType Quantity =
  229       DenseMapInfo<clang::CharUnits::QuantityType>::getTombstoneKey();
  231     return clang::CharUnits::fromQuantity(Quantity);
  234   static unsigned getHashValue(const clang::CharUnits &CU) {
  235     clang::CharUnits::QuantityType Quantity = CU.getQuantity();
  236     return DenseMapInfo<clang::CharUnits::QuantityType>::getHashValue(Quantity);
  239   static bool isEqual(const clang::CharUnits &LHS,
  240                       const clang::CharUnits &RHS) {
tools/clang/include/clang/AST/ExternalASTSource.h
  303       llvm::DenseMap<const CXXRecordDecl *, CharUnits> &BaseOffsets,
  304       llvm::DenseMap<const CXXRecordDecl *, CharUnits> &VirtualBaseOffsets);
tools/clang/include/clang/AST/NonTrivialTypeVisitor.h
   22   template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
   29                       Ts &&... Args) {
   51   template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
   54         std::forward<Ts>(Args)...);
   59                       QualType FT, Ts &&... Args) {
   79   template <class... Ts> RetTy visit(QualType FT, Ts &&... Args) {
   88                       Ts &&... Args) {
tools/clang/include/clang/AST/OSLog.h
   74   CharUnits ConstValue;
   75   CharUnits Size; // size of the data, not including the header bytes
   80   OSLogBufferItem(Kind kind, const Expr *expr, CharUnits size, unsigned flags,
   89   OSLogBufferItem(ASTContext &Ctx, CharUnits value, unsigned flags)
  105   CharUnits getConstValue() const { return ConstValue; }
  106   CharUnits size() const { return Size; }
  117   CharUnits size() const {
  118     CharUnits result;
  119     result += CharUnits::fromQuantity(2); // summary byte, num-args byte
  122       result += item.size() + CharUnits::fromQuantity(2);
tools/clang/include/clang/AST/RecordLayout.h
   43     CharUnits VBaseOffset;
   53     VBaseInfo(CharUnits VBaseOffset, bool hasVtorDisp)
   65   CharUnits Size;
   68   CharUnits DataSize;
   71   CharUnits Alignment;
   75   CharUnits UnadjustedAlignment;
   79   CharUnits RequiredAlignment;
   88     CharUnits NonVirtualSize;
   92     CharUnits NonVirtualAlignment;
   97     CharUnits SizeOfLargestEmptySubobject;
  100     CharUnits VBPtrOffset;
  128     using BaseOffsetsMapTy = llvm::DenseMap<const CXXRecordDecl *, CharUnits>;
  141   ASTRecordLayout(const ASTContext &Ctx, CharUnits size, CharUnits alignment,
  141   ASTRecordLayout(const ASTContext &Ctx, CharUnits size, CharUnits alignment,
  142                   CharUnits unadjustedAlignment,
  143                   CharUnits requiredAlignment, CharUnits datasize,
  143                   CharUnits requiredAlignment, CharUnits datasize,
  150                   CharUnits size, CharUnits alignment,
  150                   CharUnits size, CharUnits alignment,
  151                   CharUnits unadjustedAlignment,
  152                   CharUnits requiredAlignment,
  154                   CharUnits vbptroffset,
  155                   CharUnits datasize,
  157                   CharUnits nonvirtualsize, CharUnits nonvirtualalignment,
  157                   CharUnits nonvirtualsize, CharUnits nonvirtualalignment,
  158                   CharUnits SizeOfLargestEmptySubobject,
  176   CharUnits getAlignment() const { return Alignment; }
  180   CharUnits getUnadjustedAlignment() const { return UnadjustedAlignment; }
  183   CharUnits getSize() const { return Size; }
  196   CharUnits getDataSize() const {
  202   CharUnits getNonVirtualSize() const {
  210   CharUnits getNonVirtualAlignment() const {
  232   CharUnits getBaseClassOffset(const CXXRecordDecl *Base) const {
  240   CharUnits getVBaseClassOffset(const CXXRecordDecl *VBase) const {
  247   CharUnits getSizeOfLargestEmptySubobject() const {
  290   CharUnits getRequiredAlignment() const {
  305   CharUnits getVBPtrOffset() const {
tools/clang/include/clang/AST/VTTBuilder.h
   34   CharUnits BaseOffset;
   38   VTTVTable(const CXXRecordDecl *Base, CharUnits BaseOffset, bool BaseIsVirtual)
   48   CharUnits getBaseOffset() const {
tools/clang/include/clang/AST/VTableBuilder.h
   54   static VTableComponent MakeVCallOffset(CharUnits Offset) {
   58   static VTableComponent MakeVBaseOffset(CharUnits Offset) {
   62   static VTableComponent MakeOffsetToTop(CharUnits Offset) {
  100   CharUnits getVCallOffset() const {
  106   CharUnits getVBaseOffset() const {
  112   CharUnits getOffsetToTop() const {
  191   VTableComponent(Kind ComponentKind, CharUnits Offset) {
  210   CharUnits getOffset() const {
  214     return CharUnits::fromQuantity(Value >> 3);
  367   typedef llvm::DenseMap<ClassPairTy, CharUnits>
  385       const CXXRecordDecl *MostDerivedClass, CharUnits MostDerivedClassOffset,
  399   CharUnits getVirtualBaseOffsetOffset(const CXXRecordDecl *RD,
  427   CharUnits NonVirtualOffset;
  451   CharUnits FullOffsetInMDC;
  484   CharUnits VFPtrOffset;
  490       : VBTableIndex(0), VBase(nullptr), VFPtrOffset(CharUnits::Zero()),
  494                         CharUnits VFPtrOffset, uint64_t Index)
  522   typedef std::pair<const CXXRecordDecl *, CharUnits> VFTableIdTy;
  553                                        CharUnits VFPtrOffset);
tools/clang/include/clang/CodeGen/CGFunctionInfo.h
  172   static ABIArgInfo getIndirect(CharUnits Alignment, bool ByVal = true,
  183   static ABIArgInfo getIndirectInReg(CharUnits Alignment, bool ByVal = true,
  339   CharUnits getIndirectAlign() const {
  341     return CharUnits::fromQuantity(IndirectAlign);
  343   void setIndirectAlign(CharUnits IA) {
  652   CharUnits getArgStructAlignment() const {
  653     return CharUnits::fromQuantity(ArgStructAlign);
  655   void setArgStruct(llvm::StructType *Ty, CharUnits Align) {
tools/clang/include/clang/CodeGen/CodeGenABITypes.h
   92                                                        CharUnits DstAlignment,
  101                                                     CharUnits DstAlignment,
  102                                                     CharUnits SrcAlignment,
  111                                                     CharUnits DstAlignment,
  112                                                     CharUnits SrcAlignment,
  121     CodeGenModule &CGM, CharUnits DstAlignment, CharUnits SrcAlignment,
  121     CodeGenModule &CGM, CharUnits DstAlignment, CharUnits SrcAlignment,
  129     CodeGenModule &CGM, CharUnits DstAlignment, CharUnits SrcAlignment,
  129     CodeGenModule &CGM, CharUnits DstAlignment, CharUnits SrcAlignment,
  137                                                CharUnits DstAlignment,
tools/clang/include/clang/CodeGen/ConstantInitBuilder.h
   79                                      CharUnits alignment,
  106   mutable CharUnits CachedOffsetFromGlobal;
  194   void addSize(CharUnits size);
  249   CharUnits getNextOffsetFromGlobal() const {
  322   CharUnits getOffsetFromGlobalTo(size_t index) const;
  369   llvm::GlobalVariable *finishAndCreateGlobal(As &&...args) {
  372                                       std::forward<As>(args)...);
tools/clang/include/clang/CodeGen/SwiftCallingConv.h
   45     CharUnits Begin;
   46     CharUnits End;
   49     CharUnits getWidth() const {
   59   void addOpaqueData(CharUnits begin, CharUnits end) {
   59   void addOpaqueData(CharUnits begin, CharUnits end) {
   63   void addTypedData(QualType type, CharUnits begin);
   64   void addTypedData(const RecordDecl *record, CharUnits begin);
   65   void addTypedData(const RecordDecl *record, CharUnits begin,
   67   void addTypedData(llvm::Type *type, CharUnits begin);
   68   void addTypedData(llvm::Type *type, CharUnits begin, CharUnits end);
   68   void addTypedData(llvm::Type *type, CharUnits begin, CharUnits end);
   92     llvm::function_ref<void(CharUnits offset, CharUnits end, llvm::Type *type)>;
   92     llvm::function_ref<void(CharUnits offset, CharUnits end, llvm::Type *type)>;
  111   void addBitFieldData(const FieldDecl *field, CharUnits begin,
  113   void addLegalTypedData(llvm::Type *type, CharUnits begin, CharUnits end);
  113   void addLegalTypedData(llvm::Type *type, CharUnits begin, CharUnits end);
  114   void addEntry(llvm::Type *type, CharUnits begin, CharUnits end);
  114   void addEntry(llvm::Type *type, CharUnits begin, CharUnits end);
  118                                  CharUnits chunkSize);
  128 CharUnits getMaximumVoluntaryIntegerSize(CodeGenModule &CGM);
  131 CharUnits getNaturalAlignment(CodeGenModule &CGM, llvm::Type *type);
  139 bool isLegalVectorType(CodeGenModule &CGM, CharUnits vectorSize,
  141 bool isLegalVectorType(CodeGenModule &CGM, CharUnits vectorSize,
  146 splitLegalVectorType(CodeGenModule &CGM, CharUnits vectorSize,
  153 void legalizeVectorType(CodeGenModule &CGM, CharUnits vectorSize,
tools/clang/include/clang/Frontend/LayoutOverrideSource.h
   53        llvm::DenseMap<const CXXRecordDecl *, CharUnits> &BaseOffsets,
   55                       CharUnits> &VirtualBaseOffsets) override;
tools/clang/include/clang/Sema/MultiplexExternalSemaSource.h
  187                  llvm::DenseMap<const CXXRecordDecl *, CharUnits> &BaseOffsets,
  189                                 CharUnits> &VirtualBaseOffsets) override;
tools/clang/include/clang/Sema/Sema.h
11580     CharUnits Alignment;
11584                      CharUnits Alignment)
11597                                      CharUnits Alignment);
11617       llvm::function_ref<void(Expr *, RecordDecl *, FieldDecl *, CharUnits)>
tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
 1068   CharUnits Offset;
 1070   RegionRawOffset(const MemRegion* reg, CharUnits offset = CharUnits::Zero())
 1070   RegionRawOffset(const MemRegion* reg, CharUnits offset = CharUnits::Zero())
 1075   CharUnits getOffset() const { return Offset; }
tools/clang/lib/AST/APValue.cpp
   95     CharUnits Offset;
  535       CharUnits O = getLValueOffset();
  536       CharUnits S = Ctx.getTypeSizeInChars(InnerTy);
  542           S = CharUnits::One();
  743 CharUnits &APValue::getLValueOffset() {
  774 void APValue::setLValue(LValueBase B, const CharUnits &O, NoLValuePath,
  785 void APValue::setLValue(LValueBase B, const CharUnits &O,
tools/clang/lib/AST/ASTContext.cpp
 1598 CharUnits ASTContext::getDeclAlign(const Decl *D, bool ForAlignof) const {
 1698 std::pair<CharUnits, CharUnits>
 1698 std::pair<CharUnits, CharUnits>
 1700   std::pair<CharUnits, CharUnits> sizeAndAlign = getTypeInfoInChars(T);
 1700   std::pair<CharUnits, CharUnits> sizeAndAlign = getTypeInfoInChars(T);
 1717 std::pair<CharUnits, CharUnits>
 1717 std::pair<CharUnits, CharUnits>
 1720   std::pair<CharUnits, CharUnits> EltInfo =
 1720   std::pair<CharUnits, CharUnits> EltInfo =
 1731   return std::make_pair(CharUnits::fromQuantity(Width),
 1732                         CharUnits::fromQuantity(Align));
 1735 std::pair<CharUnits, CharUnits>
 1735 std::pair<CharUnits, CharUnits>
 1744 std::pair<CharUnits, CharUnits>
 1744 std::pair<CharUnits, CharUnits>
 2246 CharUnits ASTContext::toCharUnitsFromBits(int64_t BitSize) const {
 2247   return CharUnits::fromQuantity(BitSize / getCharWidth());
 2251 int64_t ASTContext::toBits(CharUnits CharSize) const {
 2257 CharUnits ASTContext::getTypeSizeInChars(QualType T) const {
 2260 CharUnits ASTContext::getTypeSizeInChars(const Type *T) const {
 2266 CharUnits ASTContext::getTypeAlignInChars(QualType T) const {
 2269 CharUnits ASTContext::getTypeAlignInChars(const Type *T) const {
 2276 CharUnits ASTContext::getTypeUnadjustedAlignInChars(QualType T) const {
 2279 CharUnits ASTContext::getTypeUnadjustedAlignInChars(const Type *T) const {
 2332 CharUnits ASTContext::getAlignOfGlobalVarInChars(QualType T) const {
 2336 CharUnits ASTContext::getOffsetOfBaseWithVBPtr(const CXXRecordDecl *RD) const {
 2337   CharUnits Offset = CharUnits::Zero();
 2337   CharUnits Offset = CharUnits::Zero();
 2405   CharUnits UnionSize = Context.getTypeSizeInChars(RD->getTypeForDecl());
 2410     CharUnits FieldSize = Context.getTypeSizeInChars(Field->getType());
 6272 CharUnits ASTContext::getObjCEncodingTypeSize(QualType type) const {
 6274     return CharUnits::Zero();
 6276   CharUnits sz = getTypeSizeInChars(type);
 6315 static std::string charUnitsToString(const CharUnits &CU) {
 6337   CharUnits PtrSize = getTypeSizeInChars(VoidPtrTy);
 6338   CharUnits ParmOffset = PtrSize;
 6341     CharUnits sz = getObjCEncodingTypeSize(PType);
 6381   CharUnits ParmOffset;
 6385     CharUnits sz = getObjCEncodingTypeSize(PType);
 6394   ParmOffset = CharUnits::Zero();
 6445   CharUnits PtrSize = getTypeSizeInChars(VoidPtrTy);
 6448   CharUnits ParmOffset = 2 * PtrSize;
 6452     CharUnits sz = getObjCEncodingTypeSize(PType);
 7187   CharUnits size;
10377   CharUnits sizeChars = getTypeSizeInChars(AtomicTy);
10379   CharUnits alignChars = getTypeAlignInChars(AtomicTy);
tools/clang/lib/AST/Expr.cpp
 2195     return APValue(Res, CharUnits::Zero(), Path, /*OnePastTheEnd=*/false);
tools/clang/lib/AST/ExprConstant.cpp
 1464     CharUnits Offset;
 1470     CharUnits &getLValueOffset() { return Offset; }
 1471     const CharUnits &getLValueOffset() const { return Offset; }
 1508       Offset = CharUnits::fromQuantity(0);
 1517           CharUnits::fromQuantity(Ctx.getTargetNullPointerValue(PointerTy));
 1599                               const APSInt &Index, CharUnits ElementSize) {
 1611       Offset = CharUnits::fromQuantity(Offset64 + ElemSize64 * Index64);
 1617     void adjustOffset(CharUnits N) {
 2748                          QualType Type, CharUnits &Size) {
 2752     Size = CharUnits::One();
 2781   CharUnits SizeOfPointee;
 2805     CharUnits SizeOfComponent;
 5991   CharUnits ElemSize;
 6139   BitCastBuffer(CharUnits Width, bool TargetIsLittleEndian)
 6144   bool readObject(CharUnits Offset, CharUnits Width,
 6144   bool readObject(CharUnits Offset, CharUnits Width,
 6146     for (CharUnits I = Offset, E = Offset + Width; I != E; ++I) {
 6158   void writeObject(CharUnits Offset, SmallVectorImpl<unsigned char> &Input) {
 6180   APValueToBufferConverter(EvalInfo &Info, CharUnits ObjectWidth,
 6187     return visit(Val, Ty, CharUnits::fromQuantity(0));
 6191   bool visit(const APValue &Val, QualType Ty, CharUnits Offset) {
 6234   bool visitRecord(const APValue &Val, QualType Ty, CharUnits Offset) {
 6263       CharUnits FieldOffset =
 6274   bool visitArray(const APValue &Val, QualType Ty, CharUnits Offset) {
 6280     CharUnits ElemWidth = Info.Ctx.getTypeSizeInChars(CAT->getElementType());
 6302   bool visitInt(const APSInt &Val, QualType Ty, CharUnits Offset) {
 6303     CharUnits Width = Info.Ctx.getTypeSizeInChars(Ty);
 6310   bool visitFloat(const APFloat &Val, QualType Ty, CharUnits Offset) {
 6318     CharUnits DstSize = Info.Ctx.getTypeSizeInChars(BCE->getType());
 6346   Optional<APValue> visit(const BuiltinType *T, CharUnits Offset,
 6351                      /*Offset=*/CharUnits::fromQuantity(NullValue),
 6355     CharUnits SizeOf = Info.Ctx.getTypeSizeInChars(T);
 6392   Optional<APValue> visit(const RecordType *RTy, CharUnits Offset) {
 6434       CharUnits FieldOffset =
 6435           CharUnits::fromQuantity(FieldOffsetBits / Info.Ctx.getCharWidth()) +
 6448   Optional<APValue> visit(const EnumType *Ty, CharUnits Offset) {
 6459   Optional<APValue> visit(const ConstantArrayType *Ty, CharUnits Offset) {
 6461     CharUnits ElementWidth = Info.Ctx.getTypeSizeInChars(Ty->getElementType());
 6475   Optional<APValue> visit(const Type *Ty, CharUnits Offset) {
 6479   Optional<APValue> visitType(QualType Ty, CharUnits Offset) {
 6507     return Converter.visitType(BCE->getType(), CharUnits::fromQuantity(0));
 8013       Result.Offset = CharUnits::fromQuantity(N);
 8064 static CharUnits GetAlignOfType(EvalInfo &Info, QualType T,
 8073     return CharUnits::One();
 8091 static CharUnits GetAlignOfExpr(EvalInfo &Info, const Expr *E,
 8152     CharUnits Align = CharUnits::fromQuantity(Alignment.getZExtValue());
 8152     CharUnits Align = CharUnits::fromQuantity(Alignment.getZExtValue());
 8160       OffsetResult.Offset += CharUnits::fromQuantity(AdditionalOffset);
 8165       CharUnits BaseAlignment;
 8257     if (IsRawByte && Info.Ctx.getTypeSizeInChars(CharTy) != CharUnits::One())
 9689   bool Success(CharUnits Size, const Expr *E) {
10348                                             CharUnits &Result) {
10349   auto CharUnitsMax = std::numeric_limits<CharUnits::QuantityType>::max();
10352   Result = CharUnits::fromQuantity(Int.getZExtValue());
10364                                CharUnits &EndOffset) {
10418   CharUnits BytesPerElem;
10474   CharUnits EndOffset;
10831       CharUnits CharTy1Size = Info.Ctx.toCharUnitsFromBits(CharTy1Width);
10920     CharUnits Size = CharUnits::fromQuantity(SizeVal.getZExtValue());
10920     CharUnits Size = CharUnits::fromQuantity(SizeVal.getZExtValue());
10927             Size == CharUnits::One() ||
11093   auto Size = Ctx.getTypeSizeInChars(Ty);
11261   CharUnits &Offset = LVal.getLValueOffset();
11264   Offset = CharUnits::fromQuantity(IsSub ? Offset64 - Index64
11605     const CharUnits &LHSOffset = LHSValue.getLValueOffset();
11606     const CharUnits &RHSOffset = RHSValue.getLValueOffset();
11679       CharUnits Size = Info.Ctx.getTypeSizeInChars(BaseTy);
11841     const CharUnits &LHSOffset = LHSValue.getLValueOffset();
11842     const CharUnits &RHSOffset = RHSValue.getLValueOffset();
11859     CharUnits ElementSize;
11934     CharUnits Sizeof;
11952   CharUnits Result;
11969       CharUnits ElementSize = Info.Ctx.getTypeSizeInChars(CurrentType);
tools/clang/lib/AST/ExternalASTSource.cpp
   77     llvm::DenseMap<const CXXRecordDecl *, CharUnits> &BaseOffsets,
   78     llvm::DenseMap<const CXXRecordDecl *, CharUnits> &VirtualBaseOffsets) {
tools/clang/lib/AST/Interp/Pointer.cpp
   78   CharUnits Offset;
   86     Offset = CharUnits::Zero();
  102       Offset = CharUnits::Zero();
  105       Offset = CharUnits::Zero();
tools/clang/lib/AST/ItaniumCXXABI.cpp
  223     CharUnits PointerSize =
tools/clang/lib/AST/MicrosoftMangle.cpp
  704   CharUnits PointerWidth = getASTContext().toCharUnitsFromBits(
tools/clang/lib/AST/OSLog.cpp
  139         CharUnits Size = CharUnits::fromQuantity(8);
  139         CharUnits Size = CharUnits::fromQuantity(8);
  145         CharUnits Size = Ctx.getTypeSizeInChars((*Data.FieldWidth)->getType());
  150         CharUnits Size = Ctx.getTypeSizeInChars((*Data.Precision)->getType());
  156         CharUnits Size = Ctx.getTypeSizeInChars((*Data.Count)->getType());
  161         Layout.Items.emplace_back(Ctx, CharUnits::fromQuantity(*Data.Size),
  164         CharUnits Size;
  166           Size = CharUnits::Zero();
  171         auto Size = Ctx.getTypeSizeInChars(Data.E->getType());
tools/clang/lib/AST/RecordLayout.cpp
   30 ASTRecordLayout::ASTRecordLayout(const ASTContext &Ctx, CharUnits size,
   31                                  CharUnits alignment,
   32                                  CharUnits unadjustedAlignment,
   33                                  CharUnits requiredAlignment,
   34                                  CharUnits datasize,
   44                                  CharUnits size, CharUnits alignment,
   44                                  CharUnits size, CharUnits alignment,
   45                                  CharUnits unadjustedAlignment,
   46                                  CharUnits requiredAlignment,
   48                                  CharUnits vbptroffset,
   49                                  CharUnits datasize,
   51                                  CharUnits nonvirtualsize,
   52                                  CharUnits nonvirtualalignment,
   53                                  CharUnits SizeOfLargestEmptySubobject,
tools/clang/lib/AST/RecordLayoutBuilder.cpp
   72   llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsets;
   75   llvm::DenseMap<const CXXRecordDecl *, CharUnits> VirtualBaseOffsets;
   85   bool getExternalNVBaseOffset(const CXXRecordDecl *RD, CharUnits &BaseOffset) {
   93   bool getExternalVBaseOffset(const CXXRecordDecl *RD, CharUnits &BaseOffset) {
  113   typedef llvm::DenseMap<CharUnits, ClassVectorTy> EmptyClassOffsetsMapTy;
  118   CharUnits MaxEmptyClassOffset;
  124   void AddSubobjectAtOffset(const CXXRecordDecl *RD, CharUnits Offset);
  127                                  CharUnits Offset, bool PlacingEmptyBase);
  130                                   const CXXRecordDecl *Class, CharUnits Offset,
  132   void UpdateEmptyFieldSubobjects(const FieldDecl *FD, CharUnits Offset,
  137   bool AnyEmptySubobjectsBeyondOffset(CharUnits Offset) const {
  141   CharUnits
  152                                  CharUnits Offset) const;
  155                                      CharUnits Offset);
  159                                       CharUnits Offset) const;
  161                                       CharUnits Offset) const;
  167   CharUnits SizeOfLargestEmptySubobject;
  179                             CharUnits Offset);
  183   bool CanPlaceFieldAtOffset(const FieldDecl *FD, CharUnits Offset);
  191     CharUnits EmptySize;
  214     CharUnits EmptySize;
  232                                              CharUnits Offset) const {
  250                                              CharUnits Offset) {
  270                                                  CharUnits Offset) {
  285     CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base->Class);
  307     CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo);
  316                                                   CharUnits Offset,
  335     CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base->Class);
  354     CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo);
  360                                              CharUnits Offset) {
  378                                                   CharUnits Offset) const {
  396     CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(BaseDecl);
  406       CharUnits VBaseOffset = Offset + Layout.getVBaseClassOffset(VBaseDecl);
  419     CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo);
  430                                                   CharUnits Offset) const {
  451     CharUnits ElementOffset = Offset;
  470                                          CharUnits Offset) {
  481     const CXXRecordDecl *RD, const CXXRecordDecl *Class, CharUnits Offset,
  507     CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(BaseDecl);
  517       CharUnits VBaseOffset = Offset + Layout.getVBaseClassOffset(VBaseDecl);
  530     CharUnits FieldOffset = Offset + getFieldOffset(Layout, FieldNo);
  537     const FieldDecl *FD, CharUnits Offset, bool PlacingOverlappingField) {
  555     CharUnits ElementOffset = Offset;
  589   CharUnits Alignment;
  592   CharUnits UnpackedAlignment;
  595   CharUnits UnadjustedAlignment;
  627   CharUnits MaxFieldAlignment;
  632   CharUnits NonVirtualSize;
  633   CharUnits NonVirtualAlignment;
  637   CharUnits PaddedFieldSize;
  654   typedef llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsetsMapTy;
  680         Alignment(CharUnits::One()), UnpackedAlignment(CharUnits::One()),
  680         Alignment(CharUnits::One()), UnpackedAlignment(CharUnits::One()),
  681         UnadjustedAlignment(CharUnits::One()),
  685         MaxFieldAlignment(CharUnits::Zero()), DataSize(0),
  686         NonVirtualSize(CharUnits::Zero()),
  687         NonVirtualAlignment(CharUnits::One()),
  688         PaddedFieldSize(CharUnits::Zero()), PrimaryBase(nullptr),
  735   void EnsureVTablePointerAlignment(CharUnits UnpackedBaseAlign);
  745                                     CharUnits Offset);
  756   CharUnits LayoutBase(const BaseSubobjectInfo *Base);
  765   void UpdateAlignment(CharUnits NewAlignment, CharUnits UnpackedNewAlignment);
  765   void UpdateAlignment(CharUnits NewAlignment, CharUnits UnpackedNewAlignment);
  766   void UpdateAlignment(CharUnits NewAlignment) {
  784   CharUnits getSize() const {
  790   void setSize(CharUnits NewSize) { Size = Context.toBits(NewSize); }
  793   CharUnits getAligment() const { return Alignment; }
  795   CharUnits getDataSize() const {
  801   void setDataSize(CharUnits NewSize) { DataSize = Context.toBits(NewSize); }
  987     CharUnits UnpackedBaseAlign) {
  988   CharUnits BaseAlign = Packed ? CharUnits::One() : UnpackedBaseAlign;
  988   CharUnits BaseAlign = Packed ? CharUnits::One() : UnpackedBaseAlign;
 1040     CharUnits PtrWidth =
 1042     CharUnits PtrAlign =
 1076   CharUnits Offset = LayoutBase(Base);
 1086     const BaseSubobjectInfo *Info, CharUnits Offset) {
 1113     CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base->Class);
 1169   CharUnits Offset = LayoutBase(Base);
 1179 CharUnits
 1184   CharUnits Offset;
 1198   CharUnits UnpackedBaseAlign = Layout.getNonVirtualAlignment();
 1199   CharUnits BaseAlign =
 1203           ? CharUnits::One()
 1208       (!HasExternalLayout || Offset == CharUnits::Zero()) &&
 1209       EmptySubobjects->CanPlaceBaseAtOffset(Base, CharUnits::Zero())) {
 1213     return CharUnits::Zero();
 1237       Alignment = CharUnits::One();
 1266     MaxFieldAlignment = CharUnits::fromQuantity(DefaultMaxFieldAlignment);
 1275     MaxFieldAlignment = CharUnits::fromQuantity(2);
 1276     Alignment = CharUnits::fromQuantity(2);
 1423   CharUnits TypeAlign = Context.getTypeAlignInChars(Type);
 1752   CharUnits FieldOffset = (IsUnion || IsOverlappingEmptyField)
 1753                               ? CharUnits::Zero()
 1755   CharUnits FieldSize;
 1756   CharUnits FieldAlign;
 1760   CharUnits EffectiveFieldSize;
 1767     EffectiveFieldSize = FieldSize = CharUnits::Zero();
 1777     std::pair<CharUnits, CharUnits> FieldInfo =
 1777     std::pair<CharUnits, CharUnits> FieldInfo =
 1798         CharUnits TypeSize = Context.getTypeSizeInChars(BTy);
 1834   CharUnits UnpackedFieldAlign = FieldAlign;
 1835   CharUnits UnpackedFieldOffset = FieldOffset;
 1838     FieldAlign = CharUnits::One();
 1839   CharUnits MaxAlignmentInChars =
 1870         if (FieldOffset == CharUnits::Zero() &&
 1871             getDataSize() != CharUnits::Zero())
 1888     CharUnits ASanAlignment = CharUnits::fromQuantity(8);
 1888     CharUnits ASanAlignment = CharUnits::fromQuantity(8);
 1889     CharUnits ExtraSizeForAsan = ASanAlignment;
 1892           ASanAlignment - CharUnits::fromQuantity(FieldSize % ASanAlignment);
 1924         setSize(CharUnits::One());
 1927       setSize(CharUnits::One());
 1947       Alignment = CharUnits::One();
 1984     CharUnits NewAlignment, CharUnits UnpackedNewAlignment) {
 1984     CharUnits NewAlignment, CharUnits UnpackedNewAlignment) {
 2011     Alignment = CharUnits::One();
 2299     CharUnits Size;
 2300     CharUnits Alignment;
 2302   typedef llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsetsMapTy;
 2341   void placeFieldAtOffset(CharUnits FieldOffset) {
 2354   CharUnits Size;
 2356   CharUnits NonVirtualSize;
 2358   CharUnits DataSize;
 2360   CharUnits Alignment;
 2362   CharUnits MaxFieldAlignment;
 2365   CharUnits RequiredAlignment;
 2369   CharUnits CurrentBitfieldSize;
 2371   CharUnits VBPtrOffset;
 2373   CharUnits MinEmptyStructSize;
 2444   CharUnits FieldRequiredAlignment =
 2470     Info.Alignment = CharUnits::One();
 2477   MinEmptyStructSize = CharUnits::fromQuantity(4);
 2488   MinEmptyStructSize = CharUnits::One();
 2497   auto RoundingAlignment = Alignment;
 2511   Size = CharUnits::Zero();
 2512   Alignment = CharUnits::One();
 2517                           ? CharUnits::One()
 2518                           : CharUnits::Zero();
 2520   MaxFieldAlignment = CharUnits::Zero();
 2523       MaxFieldAlignment = CharUnits::fromQuantity(DefaultMaxFieldAlignment);
 2533     MaxFieldAlignment = CharUnits::One();
 2628     VBPtrOffset = CharUnits::fromQuantity(-1);
 2663   CharUnits BaseOffset;
 2678       BaseOffset = CharUnits::Zero();
 2703   CharUnits FieldOffset;
 2708     FieldOffset = CharUnits::Zero();
 2740     auto NewSize = Context.toCharUnitsFromBits(
 2746     placeFieldAtOffset(CharUnits::Zero());
 2751     CharUnits FieldOffset = Size.alignTo(Info.Alignment);
 2764     placeFieldAtOffset(IsUnion ? CharUnits::Zero() : Size);
 2772     placeFieldAtOffset(CharUnits::Zero());
 2777     CharUnits FieldOffset = Size.alignTo(Info.Alignment);
 2788   CharUnits InjectionSite = VBPtrOffset;
 2792   CharUnits FieldStart = VBPtrOffset + PointerInfo.Size;
 2804   CharUnits Offset = (FieldStart - InjectionSite)
 2819   CharUnits Offset =
 2849   CharUnits VtorDispSize = CharUnits::fromQuantity(4);
 2849   CharUnits VtorDispSize = CharUnits::fromQuantity(4);
 2850   CharUnits VtorDispAlignment = VtorDispSize;
 2886     CharUnits BaseOffset;
 2910     auto RoundingAlignment = Alignment;
 3054           Builder.NonVirtualSize, Builder.Alignment, CharUnits::Zero(),
 3078       CharUnits DataSize =
 3080       CharUnits NonVirtualSize =
 3086           CharUnits::fromQuantity(-1), DataSize, Builder.FieldOffsets,
 3262                         CharUnits Offset, unsigned IndentLevel) {
 3267 static void PrintBitFieldOffset(raw_ostream &OS, CharUnits Offset,
 3292                              CharUnits Offset,
 3343       CharUnits BaseOffset = Offset + Layout.getBaseClassOffset(Base);
 3363     CharUnits FieldOffset =
 3395       CharUnits VBaseOffset = Offset + Layout.getVBaseClassOffset(VBase);
 3398         PrintOffset(OS, VBaseOffset - CharUnits::fromQuantity(4), IndentLevel);
tools/clang/lib/AST/VTTBuilder.cpp
   38   LayoutVTT(BaseSubobject(MostDerivedClass, CharUnits::Zero()),
   71     CharUnits BaseOffset = Base.getBaseOffset() +
  108     CharUnits BaseOffset;
  166       CharUnits BaseOffset =
tools/clang/lib/AST/VTableBuilder.cpp
   47   CharUnits NonVirtualOffset;
   50                  NonVirtualOffset(CharUnits::Zero()) { }
   52              const CXXRecordDecl *VirtualBase, CharUnits NonVirtualOffset)
   73     CharUnits Offset;
   76                       Offset(CharUnits::Zero()) { }
   87   const CharUnits MostDerivedClassOffset;
  101   typedef std::pair<const CXXMethodDecl *, CharUnits> MethodBaseOffsetPairTy;
  114                          CharUnits> SubobjectOffsetMapTy;
  121                           CharUnits OffsetInLayoutClass,
  135                   CharUnits MostDerivedClassOffset,
  141                              CharUnits BaseOffset) const {
  151     dump(llvm::errs(), BaseSubobject(MostDerivedClass, CharUnits::Zero()),
  158                                  CharUnits MostDerivedClassOffset,
  169   ComputeBaseOffsets(BaseSubobject(MostDerivedClass, CharUnits::Zero()),
  189       CharUnits BaseOffset = SubobjectOffsets[std::make_pair(MD->getParent(),
  199       CharUnits OverriderOffset =
  221   CharUnits NonVirtualOffset = CharUnits::Zero();
  221   CharUnits NonVirtualOffset = CharUnits::Zero();
  325                               CharUnits OffsetInLayoutClass,
  349     CharUnits BaseOffset;
  350     CharUnits BaseOffsetInLayoutClass;
  364       CharUnits Offset = Layout.getBaseClassOffset(BaseDecl);
  389     CharUnits BaseOffset;
  444   typedef std::pair<const CXXMethodDecl *, CharUnits> MethodAndOffsetPairTy;
  459   bool AddVCallOffset(const CXXMethodDecl *MD, CharUnits OffsetOffset);
  463   CharUnits getVCallOffsetOffset(const CXXMethodDecl *MD);
  509                                     CharUnits OffsetOffset) {
  521 CharUnits VCallOffsetMap::getVCallOffsetOffset(const CXXMethodDecl *MD) {
  534   typedef llvm::DenseMap<const CXXRecordDecl *, CharUnits>
  572                                CharUnits RealBaseOffset);
  575   void AddVCallOffsets(BaseSubobject Base, CharUnits VBaseOffset);
  579                        CharUnits OffsetInLayoutClass);
  583   CharUnits getCurrentOffsetOffset() const;
  590                              CharUnits OffsetInLayoutClass)
  612                                                     CharUnits RealBaseOffset) {
  627     CharUnits PrimaryBaseOffset;
  658 CharUnits VCallAndVBaseOffsetBuilder::getCurrentOffsetOffset() const {
  665   CharUnits PointerWidth =
  667   CharUnits OffsetOffset = PointerWidth * OffsetIndex;
  672                                                  CharUnits VBaseOffset) {
  696     CharUnits OffsetOffset = getCurrentOffsetOffset();
  703     CharUnits Offset = CharUnits::Zero();
  703     CharUnits Offset = CharUnits::Zero();
  729     CharUnits BaseOffset = Base.getBaseOffset() +
  739                                             CharUnits OffsetInLayoutClass) {
  749       CharUnits Offset =
  756       CharUnits VBaseOffsetOffset = getCurrentOffsetOffset();
  777   typedef llvm::DenseMap<const CXXRecordDecl *, CharUnits>
  794   const CharUnits MostDerivedClassOffset;
  829     const CharUnits BaseOffset;
  833     const CharUnits BaseOffsetInLayoutClass;
  839     MethodInfo(CharUnits BaseOffset, CharUnits BaseOffsetInLayoutClass,
  839     MethodInfo(CharUnits BaseOffset, CharUnits BaseOffsetInLayoutClass,
  846       : BaseOffset(CharUnits::Zero()),
  847       BaseOffsetInLayoutClass(CharUnits::Zero()),
  903                         CharUnits BaseOffsetInLayoutClass,
  930                        CharUnits BaseOffsetInLayoutClass,
  932                        CharUnits FirstBaseOffsetInLayoutClass) const;
  937   void AddMethods(BaseSubobject Base, CharUnits BaseOffsetInLayoutClass,
  939                   CharUnits FirstBaseOffsetInLayoutClass,
  957                                         CharUnits OffsetInLayoutClass);
  965                               CharUnits OffsetInLayoutClass);
  970                                     CharUnits OffsetInLayoutClass,
  991                        CharUnits MostDerivedClassOffset,
 1216     CharUnits OffsetToBaseSubobject = Offset.NonVirtualOffset;
 1247     const CXXMethodDecl *MD, CharUnits BaseOffsetInLayoutClass,
 1277                                                        CharUnits::Zero()),
 1280                                              CharUnits::Zero());
 1341     const CXXMethodDecl *Overrider, CharUnits BaseOffsetInLayoutClass,
 1343     CharUnits FirstBaseOffsetInLayoutClass) const {
 1427     BaseSubobject Base, CharUnits BaseOffsetInLayoutClass,
 1429     CharUnits FirstBaseOffsetInLayoutClass,
 1444     CharUnits PrimaryBaseOffset;
 1445     CharUnits PrimaryBaseOffsetInLayoutClass;
 1603                                                  CharUnits::Zero()),
 1620     Components.push_back(VTableComponent::MakeVCallOffset(CharUnits::Zero()));
 1625     bool BaseIsVirtualInLayoutClass, CharUnits OffsetInLayoutClass) {
 1651   CharUnits OffsetToTop = MostDerivedClassOffset - OffsetInLayoutClass;
 1722                                              CharUnits OffsetInLayoutClass) {
 1754     CharUnits RelativeBaseOffset = Layout.getBaseClassOffset(BaseDecl);
 1755     CharUnits BaseOffset = Base.getBaseOffset() + RelativeBaseOffset;
 1757     CharUnits BaseOffsetInLayoutClass =
 1778     const CXXRecordDecl *RD, CharUnits OffsetInLayoutClass,
 1795         CharUnits PrimaryBaseOffsetInLayoutClass =
 1813     CharUnits BaseOffsetInLayoutClass;
 1849       CharUnits BaseOffset =
 1854       CharUnits BaseOffsetInLayoutClass =
 2041         CharUnits BaseOffset =
 2071     std::map<std::string, CharUnits> ClassNamesAndOffsets;
 2074       CharUnits OffsetOffset = I.second;
 2238 CharUnits
 2249                                      BaseSubobject(RD, CharUnits::Zero()),
 2251                                      /*OffsetInLayoutClass=*/CharUnits::Zero());
 2284   ItaniumVTableBuilder Builder(*this, RD, CharUnits::Zero(),
 2316     const CXXRecordDecl *MostDerivedClass, CharUnits MostDerivedClassOffset,
 2462   CharUnits ComputeThisOffset(FinalOverriders::OverriderInfo Overrider);
 2465                                    CharUnits ThisOffset, ThisAdjustment &TA);
 2495     AddMethods(BaseSubobject(MostDerivedClass, CharUnits::Zero()), 0, nullptr,
 2623 CharUnits
 2657   CharUnits Ret;
 2663     CharUnits ThisOffset = Overrider.Offset;
 2664     CharUnits LastVBaseOffset;
 2815     FinalOverriders::OverriderInfo Overrider, CharUnits ThisOffset,
 2831   CharUnits OffsetOfVBaseWithVFPtr = VBaseMapEntry->second.VBaseOffset;
 2906   CharUnits NextBaseOffset;
 2951     CharUnits ThisOffset = ComputeThisOffset(FinalOverrider);
 3379                                  const CXXRecordDecl *RD, CharUnits Offset,
 3392     CharUnits NewOffset = BS.isVirtual()
 3418 static CharUnits getOffsetOfFullPath(ASTContext &Context,
 3423   CharUnits Offset = CharUnits::fromQuantity(-1);
 3423   CharUnits Offset = CharUnits::fromQuantity(-1);
 3429       Offset = CharUnits::Zero();
 3469     CharUnits BaseOffset =
 3471     FinalOverriders Overriders(TopLevelRD, CharUnits::Zero(), TopLevelRD);
 3528         Context, MostDerivedLayout, RD, CharUnits::Zero(),
 3545   CharUnits L = LHS.VFPtrOffset;
 3546   CharUnits R = RHS.VFPtrOffset;
 3635     CharUnits LastVFPtrOffset = CharUnits::fromQuantity(-1);
 3635     CharUnits LastVFPtrOffset = CharUnits::fromQuantity(-1);
 3638       CharUnits VFPtrOffset = I.first.VFPtrOffset;
 3722                                          CharUnits VFPtrOffset) {
tools/clang/lib/CodeGen/ABIInfo.h
  132     virtual bool isLegalVectorTypeForSwift(CharUnits totalSize,
tools/clang/lib/CodeGen/Address.h
   26   CharUnits Alignment;
   28   Address(llvm::Value *pointer, CharUnits alignment)
   66   CharUnits getAlignment() const {
   76   ConstantAddress(llvm::Constant *pointer, CharUnits alignment)
tools/clang/lib/CodeGen/CGAtomic.cpp
   36     CharUnits AtomicAlign;
   37     CharUnits ValueAlign;
   84         auto OffsetInChars =
  134     CharUnits getAtomicAlignment() const { return AtomicAlign; }
  171       CharUnits size = CGF.getContext().toCharUnitsFromBits(AtomicSizeInBits);
  724                   SourceLocation Loc, CharUnits SizeInChars) {
  727     CharUnits Align = CGF.getContext().getTypeAlignInChars(ValTy);
  765   CharUnits sizeChars, alignChars;
  834       CharUnits PointeeIncAmt =
tools/clang/lib/CodeGen/CGBlocks.cpp
  118                                       CharUnits BlockAlignment,
  340     CharUnits Alignment;
  341     CharUnits Size;
  347     BlockLayoutChunk(CharUnits align, CharUnits size,
  347     BlockLayoutChunk(CharUnits align, CharUnits size,
  355     void setIndex(CGBlockInfo &info, unsigned index, CharUnits offset) {
  443 static CharUnits getLowBit(CharUnits v) {
  443 static CharUnits getLowBit(CharUnits v) {
  444   return CharUnits::fromQuantity(v.getQuantity() & (~v.getQuantity() + 1));
  456     auto GenPtrAlign =
  457         CharUnits::fromQuantity(CGM.getTarget().getPointerAlign(GenericAS) / 8);
  458     auto GenPtrSize =
  459         CharUnits::fromQuantity(CGM.getTarget().getPointerWidth(GenericAS) / 8);
  484     info.BlockAlign = CharUnits::fromQuantity(BlockAlign);
  485     info.BlockSize = CharUnits::fromQuantity(Offset);
  548   CharUnits maxFieldAlign;
  559     std::pair<CharUnits,CharUnits> tinfo
  559     std::pair<CharUnits,CharUnits> tinfo
  577       CharUnits align = CGM.getPointerAlign();
  651     CharUnits size = C.getTypeSizeInChars(VT);
  652     CharUnits align = C.getDeclAlign(variable);
  678   info.BlockHeaderForcedGapSize = CharUnits::Zero();
  680   CharUnits &blockSize = info.BlockSize;
  685   CharUnits endAlign = getLowBit(blockSize);
  734     CharUnits newBlockSize = blockSize.alignTo(maxFieldAlign);
  735     CharUnits padding = newBlockSize - blockSize;
  760       CharUnits padding = li->Alignment - endAlign;
  929   auto GenVoidPtrSize = CharUnits::fromQuantity(
  929   auto GenVoidPtrSize = CharUnits::fromQuantity(
  990     CharUnits offset;
 1020             CharUnits::fromQuantity(
 1622     CharUnits align = getContext().getDeclAlign(variable);
 1811                                       CharUnits BlockAlignment,
 1880     CharUnits Alignment =
 1907     CharUnits BlockAlignment, CaptureStrKind StrKind, CodeGenModule &CGM) {
 2269   ObjectByrefHelpers(CharUnits alignment, BlockFieldFlags flags)
 2303   ARCWeakByrefHelpers(CharUnits alignment) : BlockByrefHelpers(alignment) {}
 2324   ARCStrongByrefHelpers(CharUnits alignment) : BlockByrefHelpers(alignment) {}
 2360   ARCStrongBlockByrefHelpers(CharUnits alignment)
 2390   CXXByrefHelpers(CharUnits alignment, QualType type,
 2418   NonTrivialCStructByrefHelpers(CharUnits alignment, QualType type)
 2619   CharUnits valueAlignment =
 2741   CharUnits size;
 2754   size += CharUnits::fromQuantity(4);
 2758   size += CharUnits::fromQuantity(4);
 2778     size += CharUnits::fromQuantity(PointerSizeInBytes);
 2785   CharUnits varAlign = getContext().getDeclAlign(D);
 2786   CharUnits varOffset = size.alignTo(varAlign);
 2827   CharUnits nextHeaderOffset;
 2907   CharUnits byrefSize = CGM.GetTargetTypeStoreSize(byrefType);
tools/clang/lib/CodeGen/CGBlocks.h
  147   CharUnits ByrefAlignment;
  148   CharUnits FieldOffset;
  163     CharUnits::QuantityType Offset;
  178     CharUnits getOffset() const {
  180       return CharUnits::fromQuantity(Offset);
  200     static Capture makeIndex(unsigned index, CharUnits offset,
  248   CharUnits BlockSize;
  249   CharUnits BlockAlign;
  250   CharUnits CXXThisOffset;
  255   CharUnits BlockHeaderForcedGapOffset;
  258   CharUnits BlockHeaderForcedGapSize;
tools/clang/lib/CodeGen/CGBuilder.h
   60   llvm::ConstantInt *getSize(CharUnits N) {
   90   llvm::LoadInst *CreateAlignedLoad(llvm::Value *Addr, CharUnits Align,
   94   llvm::LoadInst *CreateAlignedLoad(llvm::Value *Addr, CharUnits Align,
   99                                     CharUnits Align,
  115                                       CharUnits Align, bool IsVolatile = false) {
  131     return CreateAlignedLoad(getInt1Ty(), Addr, CharUnits::One(), Name);
  137     return CreateAlignedStore(getInt1(Value), Addr, CharUnits::One());
  183     auto Offset = CharUnits::fromQuantity(Layout->getElementOffset(Index));
  183     auto Offset = CharUnits::fromQuantity(Layout->getElementOffset(Index));
  202     CharUnits EltSize =
  203         CharUnits::fromQuantity(DL.getTypeAllocSize(ElTy->getElementType()));
  207                           {getSize(CharUnits::Zero()), getSize(Index)}, Name),
  220     CharUnits EltSize = CharUnits::fromQuantity(DL.getTypeAllocSize(ElTy));
  220     CharUnits EltSize = CharUnits::fromQuantity(DL.getTypeAllocSize(ElTy));
  235     CharUnits EltSize =
  236         CharUnits::fromQuantity(DL.getTypeAllocSize(Addr.getElementType()));
  244   Address CreateConstInBoundsByteGEP(Address Addr, CharUnits Offset,
  250   Address CreateConstByteGEP(Address Addr, CharUnits Offset,
  270                             CharUnits::fromQuantity(Offset.getSExtValue())));
  310     auto Offset = CharUnits::fromQuantity(Layout->getElementOffset(Index));
  310     auto Offset = CharUnits::fromQuantity(Layout->getElementOffset(Index));
tools/clang/lib/CodeGen/CGBuiltin.cpp
  325   CharUnits LoadSize = CGF.getContext().getTypeSizeInChars(ElTy);
  339   CharUnits StoreSize = CGF.getContext().getTypeSizeInChars(ElTy);
  765                    CharUnits::One());
 1120     CharUnits BufferAlignment) {
 1189   CharUnits Offset;
 1206     CharUnits Size = Item.size();
 1397                                Value *&RecordPtr, CharUnits Align,
 1853     CharUnits Arg0Align = EmitPointerWithAlignment(E->getArg(0)).getAlignment();
 2520     CharUnits WCharAlign =
 2842     CharUnits StoreSize = getContext().getTypeSizeInChars(ElTy);
 7512                                      CharUnits::fromQuantity(16));
 9126     auto Alignment = CharUnits::fromQuantity(
 9126     auto Alignment = CharUnits::fromQuantity(
 9140     auto Alignment = CharUnits::fromQuantity(
 9140     auto Alignment = CharUnits::fromQuantity(
 9151     auto Alignment = CharUnits::fromQuantity(
 9151     auto Alignment = CharUnits::fromQuantity(
10060   CpuValue = Builder.CreateAlignedLoad(CpuValue, CharUnits::fromQuantity(4));
10118         Builder.CreateAlignedLoad(CpuFeatures, CharUnits::fromQuantity(4));
10133         Builder.CreateAlignedLoad(CpuFeatures2, CharUnits::fromQuantity(4));
13619     clang::CharUnits Align =
13926                                  CharUnits::fromQuantity(4));
13934             CharUnits::fromQuantity(4));
13969           CharUnits::fromQuantity(4));
14029           CharUnits::fromQuantity(4));
14038           CharUnits::fromQuantity(4));
14048           CharUnits::fromQuantity(4));
14057           CharUnits::fromQuantity(4));
tools/clang/lib/CodeGen/CGCUDANV.cpp
  256       VoidPtrTy, CharUnits::fromQuantity(16), "kernel_args",
  295       CGF.CreateMemTemp(Dim3Ty, CharUnits::fromQuantity(8), "grid_dim");
  297       CGF.CreateMemTemp(Dim3Ty, CharUnits::fromQuantity(8), "block_dim");
  350   CharUnits Offset = CharUnits::Zero();
  350   CharUnits Offset = CharUnits::Zero();
  352     CharUnits TyWidth, TyAlign;
  637         CharUnits::fromQuantity(GpuBinaryHandle->getAlignment()));
  772   Address GpuBinaryAddr(GpuBinaryHandle, CharUnits::fromQuantity(
tools/clang/lib/CodeGen/CGCXX.cpp
  260       VTLayout.getAddressPoint(BaseSubobject(RD, CharUnits::Zero()));
tools/clang/lib/CodeGen/CGCXXABI.cpp
  108                                                 CharUnits offset) {
  161 CharUnits CGCXXABI::GetArrayCookieSize(const CXXNewExpr *expr) {
  163     return CharUnits::Zero();
  167 CharUnits CGCXXABI::getArrayCookieSizeImpl(QualType elementType) {
  169   return CharUnits::Zero();
  204                                llvm::Value *&allocPtr, CharUnits &cookieSize) {
  212     cookieSize = CharUnits::Zero();
  225                                            CharUnits cookieSize) {
  251 CharUnits CGCXXABI::getMemberPointerPathAdjustment(const APValue &MP) {
  255   CharUnits ThisAdjustment = CharUnits::Zero();
  255   CharUnits ThisAdjustment = CharUnits::Zero();
  312 std::vector<CharUnits> CGCXXABI::getVBPtrOffsets(const CXXRecordDecl *RD) {
tools/clang/lib/CodeGen/CGCXXABI.h
  193                                                 CharUnits offset);
  224   CharUnits getMemberPointerPathAdjustment(const APValue &MP);
  361   virtual CharUnits getVirtualFunctionPrologueThisAdjustment(GlobalDecl GD) {
  362     return CharUnits::Zero();
  416                                                 CharUnits VPtrOffset) = 0;
  462   virtual std::vector<CharUnits> getVBPtrOffsets(const CXXRecordDecl *RD);
  481   virtual CharUnits GetArrayCookieSize(const CXXNewExpr *expr);
  514                                llvm::Value *&AllocPtr, CharUnits &CookieSize);
  523   virtual CharUnits getArrayCookieSizeImpl(QualType elementType);
  535                                            CharUnits cookieSize);
tools/clang/lib/CodeGen/CGCall.cpp
  919       CharUnits UnionSize = CharUnits::Zero();
  919       CharUnits UnionSize = CharUnits::Zero();
  926         CharUnits FieldSize = Context.getTypeSizeInChars(FD->getType());
 1005   CharUnits EltSize = CGF.getContext().getTypeSizeInChars(CAE->EltTy);
 1006   CharUnits EltAlign =
 1114                                            CharUnits MinAlign) {
 1117   CharUnits Align = std::max(MinAlign, CharUnits::fromQuantity(PrefAlign));
 1117   CharUnits Align = std::max(MinAlign, CharUnits::fromQuantity(PrefAlign));
 1348                                              CharUnits::fromQuantity(offset));
 2063       CharUnits Align = AI.getIndirectAlign();
 2328           CharUnits Size = getContext().getTypeSizeInChars(Ty);
 3043   CharUnits Align = CharUnits::fromQuantity(4);
 3043   CharUnits Align = CharUnits::fromQuantity(4);
 3843     auto Align = CallInfo.getArgStructAlignment();
 3958         CharUnits Align = ArgInfo.getIndirectAlign();
 4154             CharUnits::fromQuantity(std::max(
tools/clang/lib/CodeGen/CGCall.h
  365     CharUnits Alignment;
  378         Alignment(Addr.isValid() ? Addr.getAlignment() : CharUnits::Zero()) {}
tools/clang/lib/CodeGen/CGClass.cpp
   36 CharUnits CodeGenModule::getClassPointerAlignment(const CXXRecordDecl *RD) {
   38     return CharUnits::One(); // Hopefully won't be used anywhere.
   55 CharUnits CodeGenModule::getVBaseAlignment(CharUnits actualDerivedAlign,
   55 CharUnits CodeGenModule::getVBaseAlignment(CharUnits actualDerivedAlign,
   63   CharUnits expectedVBaseAlign = baseLayout.getNonVirtualAlignment();
   69 CharUnits
   70 CodeGenModule::getDynamicOffsetAlignment(CharUnits actualBaseAlign,
   72                                          CharUnits expectedTargetAlign) {
   79   CharUnits expectedBaseAlign = baseLayout.getNonVirtualAlignment();
  140   CharUnits memberAlign = getNaturalTypeAlignment(memberType, BaseInfo,
  149 CharUnits CodeGenModule::computeNonVirtualBaseClassOffset(
  152   CharUnits Offset = CharUnits::Zero();
  152   CharUnits Offset = CharUnits::Zero();
  182   CharUnits Offset =
  207   CharUnits Offset;
  228                                 CharUnits nonVirtualOffset,
  255   CharUnits alignment;
  291   CharUnits NonVirtualOffset = CGM.computeNonVirtualBaseClassOffset(
  299     CharUnits vBaseOffset = layout.getVBaseClassOffset(VBase);
  310   CharUnits DerivedAlign = CGM.getClassPointerAlignment(Derived);
  462     CharUnits BaseOffset = ForVirtualBase ?
  782     std::pair<CharUnits, CharUnits> FieldInfo =
  782     std::pair<CharUnits, CharUnits> FieldInfo =
  784     CharUnits FieldSize = FieldInfo.first;
  923     CharUnits getMemcpySize(uint64_t FirstByteOffset) const {
  932       CharUnits MemcpySize = Ctx.toCharUnitsFromBits(MemcpySizeBits);
  955       CharUnits MemcpySize = getMemcpySize(FirstByteOffset);
  979     void emitMemcpyIR(Address DestPtr, Address SrcPtr, CharUnits Size) {
 1636              CharUnits::QuantityType PoisonSize) {
 1720       CharUnits::QuantityType PoisonSize;
 1754       CharUnits::QuantityType PoisonSize =
 1962   CharUnits eltAlignment =
 2116                   getContext().getRecordType(ClassDecl), CharUnits::Zero());
 2279   CharUnits NonVirtualOffset = Vptr.Base.getBaseOffset();
 2466   CharUnits NonVirtualOffset = CharUnits::Zero();
 2466   CharUnits NonVirtualOffset = CharUnits::Zero();
 2509   getVTablePointers(BaseSubobject(VTableClass, CharUnits::Zero()),
 2511                     /*OffsetFromNearestVBase=*/CharUnits::Zero(),
 2519                                         CharUnits OffsetFromNearestVBase,
 2543     CharUnits BaseOffset;
 2544     CharUnits BaseOffsetFromNearestVBase;
 2556       BaseOffsetFromNearestVBase = CharUnits::Zero();
tools/clang/lib/CodeGen/CGCleanup.cpp
   79     return Address(value, CharUnits::fromQuantity(alignment));
   87     return RValue::getAggregate(Address(Value, CharUnits::fromQuantity(Align)));
   90     return RValue::getAggregate(Address(addr, CharUnits::fromQuantity(Align)));
  280       Builder.getInt1Ty(), CharUnits::One(), "cleanup.cond");
 1205     var = CGF.CreateTempAlloca(CGF.Builder.getInt1Ty(), CharUnits::One(),
tools/clang/lib/CodeGen/CGCleanup.h
  325     return Address(ActiveFlag, CharUnits::One());
tools/clang/lib/CodeGen/CGCoroutine.cpp
  498       CGF.CreateTempAlloca(Builder.getInt1Ty(), CharUnits::One(), "gro.active");
tools/clang/lib/CodeGen/CGDebugInfo.cpp
 1794           CharUnits chars =
 1996         CGM.getMicrosoftVTableContext().getVFTableLayout(RD, CharUnits::Zero());
 3870   CharUnits Align = CGM.getContext().getDeclAlign(VD);
 3873     CharUnits FieldOffsetInBytes =
 3875     CharUnits AlignedOffsetInBytes = FieldOffsetInBytes.alignTo(Align);
 3876     CharUnits NumPaddingBytes = AlignedOffsetInBytes - FieldOffsetInBytes;
 3966       CharUnits offset = CharUnits::fromQuantity(32);
 3966       CharUnits offset = CharUnits::fromQuantity(32);
 4119   CharUnits offset = CharUnits::fromQuantity(
 4119   CharUnits offset = CharUnits::fromQuantity(
tools/clang/lib/CodeGen/CGDecl.cpp
  383   CharUnits alignment = getContext().getDeclAlign(&D);
 1079                                                CharUnits Align) {
 1131                                                 CharUnits Align) {
 1386   CharUnits alignment = getContext().getDeclAlign(&D);
 1462             CreateTempAlloca(Zero->getType(), CharUnits::One(), "nrvo");
 1472       CharUnits allocaAlignment;
 1665   CharUnits Size = getContext().getTypeSizeInChars(type);
 1691   CharUnits EltSize = getContext().getTypeSizeInChars(VlaSize.Type);
 1707     CharUnits ConstantAlign = getContext().getTypeAlignInChars(VlaSize.Type);
 1727     CharUnits CurAlign = Loc.getAlignment().alignmentOfArrayElement(EltSize);
 2110   CharUnits elementAlign =
 2143                                        CharUnits elementAlign,
 2195                                     QualType type, CharUnits elementAlign,
 2230     CharUnits ElementAlign;
 2233                                QualType elementType, CharUnits elementAlign,
 2253     CharUnits ElementAlign;
 2258                                  CharUnits elementAlign,
 2281                                                        CharUnits elementAlign,
 2298                                                      CharUnits elementAlign,
tools/clang/lib/CodeGen/CGDeclCXX.cpp
  154 void CodeGenFunction::EmitInvariantStart(llvm::Constant *Addr, CharUnits Size) {
  699           CharUnits::fromQuantity(
tools/clang/lib/CodeGen/CGException.cpp
  412   return Address(EHSelectorSlot, CharUnits::fromQuantity(4));
tools/clang/lib/CodeGen/CGExpr.cpp
   65                                                      CharUnits Align,
   75 Address CodeGenFunction::CreateTempAlloca(llvm::Type *Ty, CharUnits Align,
  121   CharUnits Align =
  122     CharUnits::fromQuantity(CGM.getDataLayout().getABITypeAlignment(Ty));
  135   CharUnits Align = getContext().getTypeAlignInChars(Ty);
  145 Address CodeGenFunction::CreateMemTemp(QualType Ty, CharUnits Align,
  151 Address CodeGenFunction::CreateMemTempWithoutCast(QualType Ty, CharUnits Align,
  394           CharUnits alignment = CGF.getContext().getTypeAlignInChars(Ty);
  655                                     CharUnits Alignment,
 1069           CharUnits Align = getNaturalPointeeTypeAlignment(E->getType(),
 1139   CharUnits Align = getNaturalPointeeTypeAlignment(E->getType(), BaseInfo,
 1180   return MakeAddrLValue(Address(llvm::UndefValue::get(Ty), CharUnits::One()),
 2327   CharUnits Align = getNaturalTypeAlignment(RefLVal.getType()->getPointeeType(),
 2379   CharUnits Alignment = CGF.getContext().getDeclAlign(VD);
 2423   CharUnits Alignment = CGF.getContext().getDeclAlign(FD);
 2456   CharUnits Alignment = CGM.getContext().getDeclAlign(VD);
 2551         CharUnits Alignment =
 3381 static CharUnits getArrayElementAlign(CharUnits arrayAlign,
 3381 static CharUnits getArrayElementAlign(CharUnits arrayAlign,
 3383                                       CharUnits eltSize) {
 3387     CharUnits offset = constantIdx->getZExtValue() * eltSize;
 3425   CharUnits eltSize = CGF.getContext().getTypeSizeInChars(eltType);
 3426   CharUnits eltAlign =
 3540     CharUnits InterfaceSize = getContext().getTypeSizeInChars(OIT);
 3554     CharUnits EltAlign =
 3582         *this, ArrayLV.getAddress(), {CGM.getSize(CharUnits::Zero()), Idx},
 3637     CharUnits Align = CGF.getNaturalTypeAlignment(ElTy, &TypeBaseInfo,
 3782         *this, ArrayLV.getAddress(), {CGM.getSize(CharUnits::Zero()), Idx},
 3878                   /*Alignment=*/CharUnits::Zero(), SkippedChecks);
 3928   CharUnits Offset = CGF.getContext().toCharUnitsFromBits(
tools/clang/lib/CodeGen/CGExprAgg.cpp
  362     CharUnits sz = dest.getPreferredSize(CGF.getContext(), type);
  486   CharUnits elementSize = CGF.getContext().getTypeSizeInChars(elementType);
  487   CharUnits elementAlign =
  506       CharUnits Align = CGM.getContext().getTypeAlignInChars(ArrayQTy);
 1321               CharUnits::One()); // placeholder
 1506           CharUnits::One());
 1662   CharUnits elementSize = CGF.getContext().getTypeSizeInChars(elementType);
 1663   CharUnits elementAlign =
 1746 static CharUnits GetNumNonZeroBytesInInit(const Expr *E, CodeGenFunction &CGF) {
 1750   if (isSimpleZero(E, CGF)) return CharUnits::Zero();
 1766       CharUnits NumNonZeroBytes = CharUnits::Zero();
 1766       CharUnits NumNonZeroBytes = CharUnits::Zero();
 1797   CharUnits NumNonZeroBytes = CharUnits::Zero();
 1797   CharUnits NumNonZeroBytes = CharUnits::Zero();
 1823   CharUnits Size = Slot.getPreferredSize(CGF.getContext(), E->getType());
 1824   if (Size <= CharUnits::fromQuantity(16))
 1829   CharUnits NumNonZeroBytes = GetNumNonZeroBytesInInit(E, CGF);
 1952   std::pair<CharUnits, CharUnits> TypeInfo;
 1952   std::pair<CharUnits, CharUnits> TypeInfo;
tools/clang/lib/CodeGen/CGExprCXX.cpp
  333                 /*Alignment=*/CharUnits::Zero(), SkippedChecks);
  487   CharUnits NVSize = Layout.getNonVirtualSize();
  492   SmallVector<std::pair<CharUnits, CharUnits>, 1> Stores;
  492   SmallVector<std::pair<CharUnits, CharUnits>, 1> Stores;
  493   Stores.emplace_back(CharUnits::Zero(), NVSize);
  496   CharUnits VBPtrWidth = CGF.getPointerSize();
  497   std::vector<CharUnits> VBPtrOffsets =
  499   for (CharUnits VBPtrOffset : VBPtrOffsets) {
  503     std::pair<CharUnits, CharUnits> LastStore = Stores.pop_back_val();
  503     std::pair<CharUnits, CharUnits> LastStore = Stores.pop_back_val();
  504     CharUnits LastStoreOffset = LastStore.first;
  505     CharUnits LastStoreSize = LastStore.second;
  507     CharUnits SplitBeforeOffset = LastStoreOffset;
  508     CharUnits SplitBeforeSize = VBPtrOffset - SplitBeforeOffset;
  513     CharUnits SplitAfterOffset = VBPtrOffset + VBPtrWidth;
  514     CharUnits SplitAfterSize = LastStoreSize - SplitAfterOffset;
  533     CharUnits Align = std::max(Layout.getNonVirtualAlignment(),
  540     for (std::pair<CharUnits, CharUnits> Store : Stores) {
  540     for (std::pair<CharUnits, CharUnits> Store : Stores) {
  541       CharUnits StoreOffset = Store.first;
  542       CharUnits StoreSize = Store.second;
  554     for (std::pair<CharUnits, CharUnits> Store : Stores) {
  554     for (std::pair<CharUnits, CharUnits> Store : Stores) {
  555       CharUnits StoreOffset = Store.first;
  556       CharUnits StoreSize = Store.second;
  660 static CharUnits CalculateCookiePadding(CodeGenFunction &CGF,
  663     return CharUnits::Zero();
  668     return CharUnits::Zero();
  681     CharUnits typeSize = CGF.getContext().getTypeSizeInChars(type);
  723   CharUnits typeSize = CGF.getContext().getTypeSizeInChars(type);
  982   CharUnits ElementSize = getContext().getTypeSizeInChars(ElementType);
  983   CharUnits ElementAlign =
 1078     CharUnits StartAlign = CurPtr.getAlignment();
 1389     CharUnits AllocAlign;
 1403                         CharUnits AllocAlign)
 1470                                   CharUnits AllocAlign,
 1558   CharUnits allocAlign = getContext().getTypeAlignInChars(allocType);
 1596       CharUnits cookieAlign = getSizeAlign(); // FIXME: Ask the ABI.
 1630     CharUnits allocationAlign = allocAlign;
 1754                                      CharUnits CookieSize) {
 1782     CharUnits DeleteTypeSize = getContext().getTypeSizeInChars(DeleteTy);
 1801     CharUnits DeleteTypeAlign = getContext().toCharUnitsFromBits(
 1952     CharUnits CookieSize;
 1958                     CharUnits CookieSize)
 1976   CharUnits cookieSize;
 1993     CharUnits elementSize = CGF.getContext().getTypeSizeInChars(elementType);
 1994     CharUnits elementAlign =
tools/clang/lib/CodeGen/CGExprConstant.cpp
   46   CharUnits getAlignment(const llvm::Constant *C) const {
   47     return CharUnits::fromQuantity(
   51   CharUnits getSize(llvm::Type *Ty) const {
   52     return CharUnits::fromQuantity(CGM.getDataLayout().getTypeAllocSize(Ty));
   55   CharUnits getSize(const llvm::Constant *C) const {
   59   llvm::Constant *getPadding(CharUnits PadSize) const {
   61     if (PadSize > CharUnits::One())
   66   llvm::Constant *getZeroes(CharUnits ZeroSize) const {
   84   llvm::SmallVector<CharUnits, 32> Offsets;
   89   CharUnits Size = CharUnits::Zero();
   89   CharUnits Size = CharUnits::Zero();
   95   bool split(size_t Index, CharUnits Hint);
   96   Optional<size_t> splitAt(CharUnits Pos);
  100                                    ArrayRef<CharUnits> Offsets,
  101                                    CharUnits StartOffset, CharUnits Size,
  101                                    CharUnits StartOffset, CharUnits Size,
  114   bool add(llvm::Constant *C, CharUnits Offset, bool AllowOverwrite);
  121   void condense(CharUnits Offset, llvm::Type *DesiredTy);
  129     return buildFrom(CGM, Elems, Offsets, CharUnits::Zero(), Size,
  141 bool ConstantAggregateBuilder::add(llvm::Constant *C, CharUnits Offset,
  145     CharUnits Align = getAlignment(C);
  146     CharUnits AlignedSize = Size.alignTo(Align);
  164   CharUnits CSize = getSize(C);
  190   for (CharUnits OffsetInChars =
  228           splitAt(OffsetInChars + CharUnits::One());
  286 Optional<size_t> ConstantAggregateBuilder::splitAt(CharUnits Pos) {
  314 bool ConstantAggregateBuilder::split(size_t Index, CharUnits Hint) {
  317   CharUnits Offset = Offsets[Index];
  325       CharUnits ElemSize = getSize(Seq->getElementType());
  338                     return Offset + CharUnits::fromQuantity(
  347     CharUnits ElemSize = getSize(CDS->getElementType());
  361     CharUnits ElemSize = getSize(C);
  390     ArrayRef<CharUnits> Offsets, CharUnits StartOffset, CharUnits Size,
  390     ArrayRef<CharUnits> Offsets, CharUnits StartOffset, CharUnits Size,
  390     ArrayRef<CharUnits> Offsets, CharUnits StartOffset, CharUnits Size,
  407     CharUnits ElemSize = Utils.getSize(ATy->getElementType());
  432   CharUnits DesiredSize = Utils.getSize(DesiredTy);
  433   CharUnits Align = CharUnits::One();
  433   CharUnits Align = CharUnits::One();
  436   CharUnits AlignedSize = Size.alignTo(Align);
  458     CharUnits SizeSoFar = CharUnits::Zero();
  458     CharUnits SizeSoFar = CharUnits::Zero();
  460       CharUnits Align = Utils.getAlignment(Elems[I]);
  461       CharUnits NaturalOffset = SizeSoFar.alignTo(Align);
  462       CharUnits DesiredOffset = Offset(I);
  495 void ConstantAggregateBuilder::condense(CharUnits Offset,
  497   CharUnits Size = getSize(DesiredTy);
  540   CharUnits StartOffset;
  548                            ConstantAggregateBuilder &Const, CharUnits Offset,
  553                      ConstantAggregateBuilder &Builder, CharUnits StartOffset)
  560   bool AppendBytes(CharUnits FieldOffsetInChars, llvm::Constant *InitCst,
  568              const CXXRecordDecl *VTableClass, CharUnits BaseOffset);
  577   CharUnits FieldOffsetInChars = Context.toCharUnitsFromBits(FieldOffset);
  582 bool ConstStructBuilder::AppendBytes(CharUnits FieldOffsetInChars,
  612                                       CharUnits Offset, QualType Type,
  621   CharUnits ElemSize = Emitter.CGM.getContext().getTypeSizeInChars(ElemType);
  701         CharUnits Offset = CGM.getContext().toCharUnitsFromBits(
  748   BaseInfo(const CXXRecordDecl *Decl, CharUnits Offset, unsigned Index)
  753   CharUnits Offset;
  763                                CharUnits Offset) {
  785       CharUnits BaseOffset = Layout.getBaseClassOffset(BD);
  851   ConstStructBuilder Builder(Emitter, Const, CharUnits::Zero());
  863   ConstStructBuilder Builder(Emitter, Const, CharUnits::Zero());
  867   if (!Builder.Build(Val, RD, false, CD, CharUnits::Zero()))
  875                                       CharUnits Offset, InitListExpr *Updater) {
  887   CharUnits Align = CGM.getContext().getTypeAlignInChars(E->getType());
 1254     Const.add(C, CharUnits::Zero(), false);
 1256     if (!EmitDesignatedInitUpdater(Emitter, Const, CharUnits::Zero(), destType,
 2183   CharUnits chars = getContext().toCharUnitsFromBits((int64_t) fieldOffset);
tools/clang/lib/CodeGen/CGExprScalar.cpp
 2545     CharUnits size = CGF.getContext().getTypeSizeInChars(OPT->getObjectType());
 2716       CharUnits OffsetInt = RL.getBaseClassOffset(BaseRD);
 2748       CharUnits eltSize = CGF.getContext().getTypeSizeInChars(VlaSize.Type);
 3552     CharUnits eltSize = CGF.getContext().getTypeSizeInChars(elementType);
 3560     CharUnits elementSize;
 3564       elementSize = CharUnits::One();
tools/clang/lib/CodeGen/CGNonTrivialStruct.cpp
   40   void visitStructFields(QualType QT, CharUnits CurStructOffset, Ts... Args) {
   53   template <class... Ts> void visitTrivial(Ts... Args) {}
   55   template <class... Ts> void visitCXXDestructor(Ts... Args) {
   67   CharUnits getFieldOffset(const FieldDecl *FD) {
   87                 const FieldDecl *FD, CharUnits CurStructOffset, Ts &&... Args) {
   94                      const FieldDecl *FD, CharUnits CurStructOffset,
  107   void visitTrivial(QualType FT, const FieldDecl *FD, CharUnits CurStructOffset,
  127   CharUnits Start = CharUnits::Zero(), End = CharUnits::Zero();
  127   CharUnits Start = CharUnits::Zero(), End = CharUnits::Zero();
  127   CharUnits Start = CharUnits::Zero(), End = CharUnits::Zero();
  151   std::string getVolatileOffsetStr(bool IsVolatile, CharUnits Offset) {
  160                       CharUnits CurStructOffset) {
  164     CharUnits FieldOffset = CurStructOffset + asDerived().getFieldOffset(FD);
  169                     CharUnits CurStructOffset) {
  171     CharUnits FieldOffset = CurStructOffset + asDerived().getFieldOffset(FD);
  176                    CharUnits CurStructOffset) {
  177     CharUnits FieldOffset = CurStructOffset + asDerived().getFieldOffset(FD);
  184                   const FieldDecl *FD, CharUnits CurStructOffset) {
  191     CharUnits FieldOffset = CurStructOffset + asDerived().getFieldOffset(FD);
  196     CharUnits EltSize = Ctx.getTypeSizeInChars(EltTy);
  209     asDerived().visitStructFields(QT, CharUnits::Zero());
  220   GenUnaryFuncName(StringRef Prefix, CharUnits DstAlignment, ASTContext &Ctx)
  237   GenBinaryFuncName(StringRef Prefix, CharUnits DstAlignment,
  238                     CharUnits SrcAlignment, ASTContext &Ctx)
  252     this->Start = this->End = CharUnits::Zero();
  256                             CharUnits CurStructOffset) {
  270   GenDefaultInitializeFuncName(CharUnits DstAlignment, ASTContext &Ctx)
  274                      const FieldDecl *FD, CharUnits CurStructOffset) {
  287   GenDestructorFuncName(const char *Prefix, CharUnits DstAlignment,
  291                      const FieldDecl *FD, CharUnits CurStructOffset) {
  324   void visitStruct(QualType FT, const FieldDecl *FD, CharUnits CurStructOffset,
  332                   const FieldDecl *FD, CharUnits CurStructOffset,
  385     CharUnits EltSize = Ctx.getTypeSizeInChars(EltQT);
  393     this->asDerived().visitWithKind(FK, EltQT, nullptr, CharUnits::Zero(),
  411   Address getAddrWithOffset(Address Addr, CharUnits Offset) {
  420   Address getAddrWithOffset(Address Addr, CharUnits StructFieldOffset,
  429               std::array<CharUnits, N> Alignments, CodeGenModule &CGM) {
  475     asDerived().visitStructFields(QT, CharUnits::Zero(), Addrs);
  483     std::array<CharUnits, N> Alignments;
  511     CharUnits Size = this->End - this->Start;
  538     this->Start = this->End = CharUnits::Zero();
  542   void visitVolatileTrivial(QualType FT, const FieldDecl *FD, CharUnits Offset,
  576                      const FieldDecl *FD, CharUnits CurStructOffset,
  587                       CharUnits CurStructOffset, std::array<Address, 1> Addrs) {
  592   void visitARCWeak(QualType QT, const FieldDecl *FD, CharUnits CurStructOffset,
  598   void callSpecialFunction(QualType FT, CharUnits Offset,
  616                      const FieldDecl *FD, CharUnits CurStructOffset,
  628                       CharUnits CurStructOffset, std::array<Address, 1> Addrs) {
  633   void visitARCWeak(QualType QT, const FieldDecl *FD, CharUnits CurStructOffset,
  641                   const FieldDecl *FD, CharUnits CurStructOffset,
  647     CharUnits Size = Ctx.getTypeSizeInChars(QualType(AT, 0));
  650     if (Size < CharUnits::fromQuantity(16) || EltTy->getAs<RecordType>()) {
  662   void callSpecialFunction(QualType FT, CharUnits Offset,
  674                       CharUnits CurStructOffset, std::array<Address, 2> Addrs) {
  683   void visitARCWeak(QualType QT, const FieldDecl *FD, CharUnits CurStructOffset,
  690   void callSpecialFunction(QualType FT, CharUnits Offset,
  704                       CharUnits CurStructOffset, std::array<Address, 2> Addrs) {
  715   void visitARCWeak(QualType QT, const FieldDecl *FD, CharUnits CurStructOffset,
  722   void callSpecialFunction(QualType FT, CharUnits Offset,
  736                       CharUnits CurStructOffset, std::array<Address, 2> Addrs) {
  745   void visitARCWeak(QualType QT, const FieldDecl *FD, CharUnits CurStructOffset,
  752   void callSpecialFunction(QualType FT, CharUnits Offset,
  767                       CharUnits CurStructOffset, std::array<Address, 2> Addrs) {
  781   void visitARCWeak(QualType QT, const FieldDecl *FD, CharUnits CurStructOffset,
  788   void callSpecialFunction(QualType FT, CharUnits Offset,
  813   Gen.visit(QT, nullptr, CharUnits::Zero(), std::array<Address, 1>({{DstPtr}}));
  829   return std::array<Address, 1>({{Address(nullptr, CharUnits::Zero())}});
  833   return std::array<Address, 2>({{Address(nullptr, CharUnits::Zero()),
  834                                   Address(nullptr, CharUnits::Zero())}});
  840                    std::array<CharUnits, N> Alignments, CodeGenModule &CGM) {
  861     QualType QT, CharUnits Alignment, bool IsVolatile, ASTContext &Ctx) {
  867                                                         CharUnits Alignment,
  936     CodeGenModule &CGM, CharUnits DstAlignment, bool IsVolatile, QualType QT) {
  945     CodeGenModule &CGM, CharUnits DstAlignment, CharUnits SrcAlignment,
  945     CodeGenModule &CGM, CharUnits DstAlignment, CharUnits SrcAlignment,
  957     CodeGenModule &CGM, CharUnits DstAlignment, CharUnits SrcAlignment,
  957     CodeGenModule &CGM, CharUnits DstAlignment, CharUnits SrcAlignment,
  969     CodeGenModule &CGM, CharUnits DstAlignment, CharUnits SrcAlignment,
  969     CodeGenModule &CGM, CharUnits DstAlignment, CharUnits SrcAlignment,
  981     CodeGenModule &CGM, CharUnits DstAlignment, CharUnits SrcAlignment,
  981     CodeGenModule &CGM, CharUnits DstAlignment, CharUnits SrcAlignment,
  993     CodeGenModule &CGM, CharUnits DstAlignment, bool IsVolatile, QualType QT) {
tools/clang/lib/CodeGen/CGObjC.cpp
  744   CharUnits size = CGF.getContext().getTypeSizeInChars(ivar->getType());
  766 static CharUnits getMaxAtomicAccessSize(CodeGenModule &CGM,
  773   return CharUnits::fromQuantity(CGM.PointerSizeInBytes);
  805     CharUnits getIvarSize() const { return IvarSize; }
  806     CharUnits getIvarAlignment() const { return IvarAlignment; }
  817     CharUnits IvarSize;
  818     CharUnits IvarAlignment;
 2311        dst.getAlignment() >= CharUnits::fromQuantity(PointerAlignInBytes))) {
 3656   CharUnits Alignment
tools/clang/lib/CodeGen/CGObjCGNU.cpp
  970     CharUnits Align = CGM.getPointerAlign();
 1681     CharUnits Align = CGM.getIntAlign();
 2454   CharUnits Align = CGM.getPointerAlign();
 3214     fields.finishAndCreateGlobal("", CharUnits::fromQuantity(4));
 4080               CharUnits::fromQuantity(4)),
 4084     CharUnits Align = CGM.getIntAlign();
tools/clang/lib/CodeGen/CGObjCMac.cpp
  829     CharUnits block_var_bytepos;
  830     CharUnits block_var_size;
  832              CharUnits BytePos = CharUnits::Zero(),
  832              CharUnits BytePos = CharUnits::Zero(),
  833              CharUnits Size = CharUnits::Zero())
  833              CharUnits Size = CharUnits::Zero())
  964                                   CharUnits beginOffset,
  965                                   CharUnits endOffset,
  970                                         CharUnits beginOffset,
  971                                         CharUnits endOffset) {
  976                                       CharUnits beginOffset,
  977                                       CharUnits endOffset,
  986                               CharUnits FieldOffset,
  987                               CharUnits FieldSize);
  990                                    CharUnits BytePos, bool &HasUnion,
  996                            CharUnits BytePos, bool &HasUnion,
 1052                                           StringRef Section, CharUnits Align,
 1056                                           StringRef Section, CharUnits Align,
 1231                                      CharUnits instanceSize,
 1988     return ConstantAddress(C, CharUnits::fromQuantity(C->getAlignment()));
 2028   CharUnits Alignment = CGM.getPointerAlign();
 2290     CharUnits Offset;
 2292     IvarInfo(CharUnits offset, uint64_t sizeInWords)
 2307     CharUnits InstanceBegin;
 2310     CharUnits InstanceEnd;
 2321     IvarLayoutBuilder(CodeGenModule &CGM, CharUnits instanceBegin,
 2322                       CharUnits instanceEnd, bool forStrongLayout)
 2327     void visitRecord(const RecordType *RT, CharUnits offset);
 2331                         CharUnits aggrOffset,
 2334     void visitField(const FieldDecl *field, CharUnits offset);
 2364   IvarLayoutBuilder builder(CGM, CharUnits::Zero(), blockInfo.BlockSize,
 2385   IvarsInfo.push_back(IvarInfo(CharUnits::Zero(), 1));
 2392   CharUnits lastFieldOffset;
 2404     CharUnits fieldOffset = capture.getOffset();
 2456                                              CharUnits FieldOffset,
 2457                                              CharUnits FieldSize) {
 2480                                           CharUnits BytePos, bool &HasUnion,
 2483   CharUnits MaxUnionSize = CharUnits::Zero();
 2483   CharUnits MaxUnionSize = CharUnits::Zero();
 2486   CharUnits MaxFieldOffset = CharUnits::Zero();
 2486   CharUnits MaxFieldOffset = CharUnits::Zero();
 2487   CharUnits LastBitfieldOrUnnamedOffset = CharUnits::Zero();
 2487   CharUnits LastBitfieldOrUnnamedOffset = CharUnits::Zero();
 2498     CharUnits FieldOffset =
 2539           CharUnits Size = CGM.getContext().getTypeSizeInChars(RT);
 2549     CharUnits FieldSize = CGM.getContext().getTypeSizeInChars(Field->getType());
 2551       CharUnits UnionIvarSize = FieldSize;
 2572       CharUnits Size = CharUnits::fromQuantity(UnsSize);
 2572       CharUnits Size = CharUnits::fromQuantity(UnsSize);
 2582       CharUnits FieldSize
 2600                                                   CharUnits BytePos,
 2734     CharUnits start_byte_pos = RunSkipBlockVars[i].block_var_bytepos;
 2735     CharUnits end_byte_pos = start_byte_pos;
 2745     CharUnits size_in_bytes =
 2748       CharUnits gap =
 2753     CharUnits residue_in_bytes = CharUnits::Zero();
 2753     CharUnits residue_in_bytes = CharUnits::Zero();
 2774     if (residue_in_bytes > CharUnits::Zero()) {
 2920   if (blockInfo.BlockHeaderForcedGapSize != CharUnits::Zero())
 2934     CharUnits fieldOffset =
 2935        CharUnits::fromQuantity(layout->getElementOffset(capture.getIndex()));
 2943     CharUnits fieldSize;
 2945       fieldSize = CharUnits::fromQuantity(WordSizeInBytes);
 2971   CharUnits fieldOffset;
 3543   CharUnits Size =
 3596   values.add(BuildStrongIvarLayout(ID, CharUnits::Zero(), Size));
 3660   values.add(EmitClassExtension(ID, CharUnits::Zero(), false/*hasMRCWeak*/,
 3732                               CharUnits InstanceSize, bool hasMRCWeakIvars,
 3739     layout = BuildWeakIvarLayout(ID, CharUnits::Zero(), InstanceSize,
 3992                                                          CharUnits Align,
 4008                                                          CharUnits Align,
 4065   GV->setAlignment(CharUnits::One().getAsAlign());
 4493                                                 CharUnits::One(),
 5125   CharUnits Align = CGF.getPointerAlign();
 5165                                     CharUnits offset) {
 5185                                        CharUnits aggregateOffset,
 5196     CharUnits fieldOffset = aggregateOffset + getOffset(field);
 5204                                    CharUnits fieldOffset) {
 5234       CharUnits eltSize = CGM.getContext().getTypeSizeInChars(recType);
 5338   const CharUnits WordSize = CGM.getPointerSize();
 5342     CharUnits beginOfScan = request.Offset - InstanceBegin;
 5388       (InstanceEnd - InstanceBegin + WordSize - CharUnits::One()) / WordSize;
 5420                                  CharUnits beginOffset, CharUnits endOffset,
 5420                                  CharUnits beginOffset, CharUnits endOffset,
 5443   CharUnits baseOffset;
 5453         CharUnits::fromQuantity(ComputeIvarBaseOffset(CGM, OMD, ivars[0]));
 5455       baseOffset = CharUnits::Zero();
 5463     baseOffset = CharUnits::Zero();
 5471   builder.visitAggregate(ivars.begin(), ivars.end(), CharUnits::Zero(),
 5473       return CharUnits::fromQuantity(ComputeIvarBaseOffset(CGM, OMD, ivar));
 6207   CharUnits beginInstance = CharUnits::fromQuantity(InstanceStart);
 6207   CharUnits beginInstance = CharUnits::fromQuantity(InstanceStart);
 6208   CharUnits endInstance = CharUnits::fromQuantity(InstanceSize);
 6208   CharUnits endInstance = CharUnits::fromQuantity(InstanceSize);
 6518   CharUnits Align = CGF.getPointerAlign();
 7186                                               CharUnits::fromQuantity(16),
 7313   CharUnits Align = CGF.getPointerAlign();
 7393   CharUnits Align = CGF.getPointerAlign();
 7489   CharUnits Align = CGF.getPointerAlign();
tools/clang/lib/CodeGen/CGObjCRuntime.cpp
   93   CharUnits StorageSize = CGF.CGM.getContext().toCharUnitsFromBits(
   95   CharUnits Alignment = CGF.CGM.getContext().toCharUnitsFromBits(AlignmentBits);
  106                              CharUnits::fromQuantity(0)));
tools/clang/lib/CodeGen/CGOpenMPRuntime.cpp
  893   CharUnits ElementSize = CGF.getContext().getTypeSizeInChars(ElementTy);
 1125                           llvm::Type *BaseLVType, CharUnits BaseLVAlignment,
 1568   CharUnits Align = CGM.getContext().getTypeAlignInChars(IdentQTy);
 1636   CharUnits Align = CGM.getContext().getTypeAlignInChars(IdentQTy);
 3970                                      CharUnits VarSize,
 4391 typedef std::pair<CharUnits /*Align*/, PrivateHelpersTy> PrivateDataTy;
 5497   CharUnits ElementSize = CGF.getContext().getTypeSizeInChars(ElementTy);
 7630           CharUnits TypeSize = CGF.getContext().getTypeSizeInChars(
 8842   CharUnits ElementSize = C.getTypeSizeInChars(Ty);
 9090     CharUnits ElementSize, llvm::BasicBlock *ExitBB, bool IsInit) {
 9670   CharUnits VarSize = CGM.getContext().getTypeSizeInChars(Ty);
 9697   CharUnits VarSize;
 9708       VarSize = CharUnits::Zero();
10980   CharUnits Align = CGM.getContext().getDeclAlign(CVD);
10985         Size, CGM.getSize(Align - CharUnits::fromQuantity(1)));
10989     CharUnits Sz = CGM.getContext().getTypeSizeInChars(CVD->getType());
tools/clang/lib/CodeGen/CGOpenMPRuntime.h
  577      CharUnits VarSize;
  587          unsigned Order, llvm::Constant *Addr, CharUnits VarSize,
  595       CharUnits getVarSize() const { return VarSize; }
  596       void setVarSize(CharUnits Size) { VarSize = Size; }
  612                                      CharUnits VarSize,
  763                                   llvm::Value *MapType, CharUnits ElementSize,
tools/clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp
  234   using VarsDataTy = std::pair<CharUnits /*Align*/, const ValueDecl *>;
  240         CharUnits::fromQuantity(std::max(
 2159                                CharUnits::fromQuantity(Alignment));
 2364     CharUnits Align = CGM.getContext().getDeclAlign(VD);
 2845   CharUnits Size = CGF.getContext().getTypeSizeInChars(ElemType);
 2871   CharUnits Size = CGF.getContext().getTypeSizeInChars(ElemType);
 2887     if (Size < CharUnits::fromQuantity(IntSize))
 2890         CGF.getContext().toBits(CharUnits::fromQuantity(IntSize)),
 3252           C.toBits(CharUnits::fromQuantity(TySize)), /*Signed=*/1);
 3254       CharUnits Align = CharUnits::fromQuantity(TySize);
 3254       CharUnits Align = CharUnits::fromQuantity(TySize);
 4758       CharUnits Align = CGM.getContext().getDeclAlign(VD);
 4770       CharUnits Align = CGM.getContext().getDeclAlign(VD);
 4781       CharUnits Align = CGM.getContext().getDeclAlign(VD);
tools/clang/lib/CodeGen/CGRecordLayout.h
   81   CharUnits StorageOffset;
   87                  unsigned StorageSize, CharUnits StorageOffset)
  101                                  CharUnits StorageOffset);
tools/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
   78     CharUnits Offset;
   85     MemberInfo(CharUnits Offset, InfoKind Kind, llvm::Type *Data,
   88     MemberInfo(CharUnits Offset, InfoKind Kind, llvm::Type *Data,
   98   MemberInfo StorageInfo(CharUnits Offset, llvm::Type *Data) {
  126   llvm::Type *getByteArrayType(CharUnits NumBytes) {
  129     return NumBytes == CharUnits::One() ? Type :
  145   CharUnits bitsToCharUnits(uint64_t BitOffset) {
  148   CharUnits getSize(llvm::Type *Type) {
  149     return CharUnits::fromQuantity(DataLayout.getTypeAllocSize(Type));
  151   CharUnits getAlignment(llvm::Type *Type) {
  152     return CharUnits::fromQuantity(DataLayout.getABITypeAlignment(Type));
  160   void appendPaddingBytes(CharUnits Size) {
  168   void setBitFieldInfo(const FieldDecl *FD, CharUnits StartOffset,
  225     const FieldDecl *FD, CharUnits StartOffset, llvm::Type *StorageType) {
  263   CharUnits Size = NVBaseType ? Layout.getNonVirtualSize() : Layout.getSize();
  287   CharUnits LayoutSize = Layout.getSize();
  302       setBitFieldInfo(Field, CharUnits::Zero(), FieldType);
  485     Members.push_back(MemberInfo(CharUnits::Zero(), MemberInfo::Base,
  505     Members.push_back(MemberInfo(CharUnits::Zero(), MemberInfo::VFPtr,
  514   CharUnits ScissorOffset = Layout.getNonVirtualSize();
  537     CharUnits Offset = Layout.getVBaseClassOffset(BaseDecl);
  549       Members.push_back(StorageInfo(Offset - CharUnits::fromQuantity(4),
  588   CharUnits Tail = getSize(Prior->Data);
  617   CharUnits Alignment = CharUnits::One();
  617   CharUnits Alignment = CharUnits::One();
  618   CharUnits NVAlignment = CharUnits::One();
  618   CharUnits NVAlignment = CharUnits::One();
  619   CharUnits NVSize =
  620       !NVBaseType && RD ? Layout.getNonVirtualSize() : CharUnits::Zero();
  649   std::vector<std::pair<CharUnits, CharUnits> > Padding;
  649   std::vector<std::pair<CharUnits, CharUnits> > Padding;
  650   CharUnits Size = CharUnits::Zero();
  650   CharUnits Size = CharUnits::Zero();
  656     CharUnits Offset = Member->Offset;
  660         Size.alignTo(Packed ? CharUnits::One() : getAlignment(Member->Data)))
  667   for (std::vector<std::pair<CharUnits, CharUnits> >::const_iterator
  667   for (std::vector<std::pair<CharUnits, CharUnits> >::const_iterator
  697                                         CharUnits StorageOffset) {
  702   CharUnits TypeSizeInBytes =
  703     CharUnits::fromQuantity(Types.getDataLayout().getTypeAllocSize(Ty));
  791     CharUnits NonVirtualSize  = Layout.getNonVirtualSize();
tools/clang/lib/CodeGen/CGStmtOpenMP.cpp
  268   auto SizeInChars = C.getTypeSizeInChars(Ty);
  665   CharUnits ElementSize = getContext().getTypeSizeInChars(ElementTy);
tools/clang/lib/CodeGen/CGVTables.cpp
   91   auto ClassAlign = CGF.CGM.getClassPointerAlignment(ClassDecl);
 1072   CharUnits PointerWidth =
tools/clang/lib/CodeGen/CGValue.h
   73     return Address(V1.getPointer(), CharUnits::fromQuantity(align));
  227   void Initialize(QualType Type, Qualifiers Quals, CharUnits Alignment,
  315   CharUnits getAlignment() const { return CharUnits::fromQuantity(Alignment); }
  315   CharUnits getAlignment() const { return CharUnits::fromQuantity(Alignment); }
  316   void setAlignment(CharUnits A) { Alignment = A.getQuantity(); }
  590   CharUnits getAlignment() const {
  591     return CharUnits::fromQuantity(Alignment);
  622   CharUnits getPreferredSize(ASTContext &Ctx, QualType Type) const {
tools/clang/lib/CodeGen/CodeGenFunction.cpp
  105 CharUnits CodeGenFunction::getNaturalPointeeTypeAlignment(QualType T,
  112 CharUnits CodeGenFunction::getNaturalTypeAlignment(QualType T,
  133   CharUnits Alignment;
  135     Alignment = CharUnits::One(); // Shouldn't be used, but pessimistic is best.
  146         Alignment = CharUnits::One();
  154         Alignment = CharUnits::fromQuantity(MaxAlign);
  163   CharUnits Alignment = getNaturalTypeAlignment(T, &BaseInfo, &TBAAInfo);
  174   CharUnits Align = getNaturalTypeAlignment(T, &BaseInfo, &TBAAInfo,
 1579   CharUnits baseSize = CGF.getContext().getTypeSizeInChars(baseType);
 1599   CharUnits curAlign =
 1633   CharUnits size = getContext().getTypeSizeInChars(Ty);
 1646       CharUnits eltSize = getContext().getTypeSizeInChars(VlaSize.Type);
 1673     CharUnits NullAlign = DestPtr.getAlignment();
tools/clang/lib/CodeGen/CodeGenFunction.h
  176     CharUnits Alignment;
  563   typename DominatingValue<T>::saved_type saveValueInCond(T value) {
  563   typename DominatingValue<T>::saved_type saveValueInCond(T value) {
  564     return DominatingValue<T>::save(*this, value);
  607   void pushFullExprCleanup(CleanupKind kind, As... A) {
  617     typedef EHScopeStack::ConditionalCleanup<T, As...> CleanupType;
 1449     CharUnits OldCXXThisAlignment;
 1523     CharUnits OldCXXABIThisAlignment;
 1524     CharUnits OldCXXThisAlignment;
 1536   CharUnits CXXABIThisAlignment;
 1537   CharUnits CXXThisAlignment;
 1674                                         CharUnits elementAlignment,
 1679                                       CharUnits elementAlignment,
 1702                         QualType elementType, CharUnits elementAlign,
 1905     CharUnits OffsetFromNearestVBase;
 1918                          CharUnits OffsetFromNearestVBase,
 2134   LValue MakeAddrLValue(llvm::Value *V, QualType T, CharUnits Alignment,
 2140   LValue MakeAddrLValue(llvm::Value *V, QualType T, CharUnits Alignment,
 2148   CharUnits getNaturalTypeAlignment(QualType T,
 2152   CharUnits getNaturalPointeeTypeAlignment(QualType T,
 2201   Address CreateTempAlloca(llvm::Type *Ty, CharUnits align,
 2205   Address CreateTempAllocaWithoutCast(llvm::Type *Ty, CharUnits align,
 2246   Address CreateMemTemp(QualType T, CharUnits Align, const Twine &Name = "tmp",
 2252   Address CreateMemTempWithoutCast(QualType T, CharUnits Align,
 2577                       CharUnits CookieSize = CharUnits());
 2638                      QualType Type, CharUnits Alignment = CharUnits::Zero(),
 2638                      QualType Type, CharUnits Alignment = CharUnits::Zero(),
 2800       return Address(Value, CharUnits::fromQuantity(Alignment));
 3654                                                      CharUnits Alignment,
 3660                                                 CharUnits Alignment,
 3723       CharUnits BufferAlignment);
 3941   void EmitInvariantStart(llvm::Constant *Addr, CharUnits Size);
 4377   auto align = CharUnits::fromQuantity(
 4377   auto align = CharUnits::fromQuantity(
tools/clang/lib/CodeGen/CodeGenModule.cpp
  752 llvm::ConstantInt *CodeGenModule::getSize(CharUnits size) {
 2365   CharUnits Alignment = CharUnits::fromQuantity(PointerAlignInBytes);
 2365   CharUnits Alignment = CharUnits::fromQuantity(PointerAlignInBytes);
 2387   CharUnits Alignment = getContext().getDeclAlign(VD);
 3716 CharUnits CodeGenModule::GetTargetTypeStoreSize(llvm::Type *Ty) const {
 4169           Context.toBits(CharUnits::fromQuantity(32)))
 4625     return ConstantAddress(C, CharUnits::fromQuantity(C->getAlignment()));
 4741   CharUnits Align = isUTF16 ? Context.getTypeAlignInChars(Context.ShortTy)
 4780   CharUnits Alignment =
 4887                       CharUnits Alignment) {
 4912   CharUnits Alignment = getContext().getAlignOfGlobalVarInChars(S->getType());
 4971   CharUnits Alignment =
 5014   CharUnits Align = getContext().getTypeAlignInChars(MaterializedType);
 5846                                           CharUnits Offset,
tools/clang/lib/CodeGen/CodeGenModule.h
  255   CharUnits Alignment;
  257   BlockByrefHelpers(CharUnits alignment)
  631                                   CharUnits Align);
  764   llvm::ConstantInt *getSize(CharUnits numChars);
  862   CharUnits getClassPointerAlignment(const CXXRecordDecl *CD);
  865   CharUnits getVBaseAlignment(CharUnits DerivedAlign,
  865   CharUnits getVBaseAlignment(CharUnits DerivedAlign,
  872   CharUnits getDynamicOffsetAlignment(CharUnits ActualAlign,
  872   CharUnits getDynamicOffsetAlignment(CharUnits ActualAlign,
  874                                       CharUnits ExpectedTargetAlign);
  876   CharUnits
 1191   CharUnits GetTargetTypeStoreSize(llvm::Type *Ty) const;
 1331   void AddVTableTypeMetadata(llvm::GlobalVariable *VTable, CharUnits Offset,
tools/clang/lib/CodeGen/CodeGenTypeCache.h
   75   CharUnits getIntSize() const {
   76     return CharUnits::fromQuantity(IntSizeInBytes);
   78   CharUnits getIntAlign() const {
   79     return CharUnits::fromQuantity(IntAlignInBytes);
   99   CharUnits getSizeSize() const {
  100     return CharUnits::fromQuantity(SizeSizeInBytes);
  102   CharUnits getSizeAlign() const {
  103     return CharUnits::fromQuantity(SizeAlignInBytes);
  105   CharUnits getPointerSize() const {
  106     return CharUnits::fromQuantity(PointerSizeInBytes);
  108   CharUnits getPointerAlign() const {
  109     return CharUnits::fromQuantity(PointerAlignInBytes);
tools/clang/lib/CodeGen/ConstantInitBuilder.cpp
   69                                       CharUnits alignment,
  124 void ConstantAggregateBuilderBase::addSize(CharUnits size) {
  184   CharUnits offset = getNextOffsetFromGlobal();
  192     offset = offset.alignTo(CharUnits::fromQuantity(
  194   offset += CharUnits::fromQuantity(layout.getTypeStoreSize(type));
  202 CharUnits ConstantAggregateBuilderBase::getOffsetFromGlobalTo(size_t end) const{
  213   CharUnits offset;
  232         offset = offset.alignTo(CharUnits::fromQuantity(
  234       offset += CharUnits::fromQuantity(layout.getTypeStoreSize(elementType));
tools/clang/lib/CodeGen/EHScopeStack.h
   56   typedef T type;
   57   typedef T saved_type;
   65 template <class T> struct DominatingValue : InvariantValue<T> {};
  205       return T{DominatingValue<As>::restore(CGF, std::get<Is>(Saved))...};
  272   template <class T, class... As> void pushCleanup(CleanupKind Kind, As... A) {
  304   T *pushCleanupWithExtra(CleanupKind Kind, size_t N, As... A) {
tools/clang/lib/CodeGen/ItaniumCXXABI.cpp
  143                                         CharUnits offset) override;
  146                                      CharUnits ThisAdjustment);
  261                                         CharUnits VPtrOffset) override;
  304   CharUnits getArrayCookieSizeImpl(QualType elementType) override;
  312                                    CharUnits cookieSize) override;
  470   CharUnits getArrayCookieSizeImpl(QualType elementType) override;
  477                                    CharUnits cookieSize) override;
  631   CharUnits VTablePtrAlign =
  948                                      CharUnits offset) {
  957   return BuildMemberPointer(MD, CharUnits::Zero());
  961                                                   CharUnits ThisAdjustment) {
  972     CharUnits PointerWidth =
 1025   CharUnits ThisAdjustment = getMemberPointerPathAdjustment(MP);
 1030   CharUnits FieldOffset =
 1154     auto Align = CGM.getContext().getTypeAlignInChars(FI.getReturnType());
 1255   CharUnits ExnAlign = CGF.getContext().getExnObjectAlignment();
 1310 static CharUnits computeOffsetHint(ASTContext &Context,
 1319     return CharUnits::fromQuantity(-2ULL);
 1322   CharUnits Offset;
 1335         return CharUnits::fromQuantity(-1ULL);
 1349     return CharUnits::fromQuantity(-2ULL);
 1353     return CharUnits::fromQuantity(-3ULL);
 1484   CharUnits VBaseOffsetOffset =
 1741                                                      CharUnits VPtrOffset) {
 1919                               CharUnits::fromQuantity(NonVirtualAdjustment));
 1986 CharUnits ItaniumCXXABI::getArrayCookieSizeImpl(QualType elementType) {
 1989   return std::max(CharUnits::fromQuantity(CGM.SizeSizeInBytes),
 2003   CharUnits SizeSize = CGF.getSizeSize();
 2006   CharUnits CookieSize =
 2012   CharUnits CookieOffset = CookieSize - SizeSize;
 2041                                                 CharUnits cookieSize) {
 2044   CharUnits numElementsOffset = cookieSize - CGF.getSizeSize();
 2065 CharUnits ARMCXXABI::getArrayCookieSizeImpl(QualType elementType) {
 2074   return std::max(CharUnits::fromQuantity(2 * CGM.SizeSizeInBytes),
 2100   CharUnits cookieSize = ARMCXXABI::getArrayCookieSizeImpl(elementType);
 2106                                             CharUnits cookieSize) {
 2193   CharUnits guardAlignment;
 2196     guardAlignment = CharUnits::One();
 2205       guardAlignment = CharUnits::fromQuantity(
 2584     CharUnits GuardAlign = CharUnits::One();
 2584     CharUnits GuardAlign = CharUnits::One();
 2706       CharUnits Align = CGM.getContext().getDeclAlign(VD);
 2867   auto Align = CGM.getContext().getTypeAlignInChars(CGM.getContext().CharTy);
 3515   CharUnits Align =
 3710     CharUnits Offset;
 4214   CharUnits caughtExnAlignment = CGF.CGM.getClassPointerAlignment(catchRD);
tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp
   92   std::vector<CharUnits> getVBPtrOffsets(const CXXRecordDecl *RD) override {
   93     std::vector<CharUnits> VBPtrOffsets;
  101       CharUnits Offs = VBT->NonVirtualOffset;
  292                                         CharUnits VPtrOffset) override;
  428   CharUnits getArrayCookieSizeImpl(QualType type) override;
  436                                    CharUnits cookieSize) override;
  564   CharUnits getVirtualFunctionPrologueThisAdjustment(GlobalDecl GD) override;
  606                                         CharUnits NonVirtualBaseAdjustment,
  635                                         CharUnits offset) override;
  763   typedef std::pair<const CXXRecordDecl *, CharUnits> VFTableIdTy;
  920   CharUnits VBaseAlign =
 1028   CharUnits IntSize = Context.getTypeSizeInChars(Context.IntTy);
 1029   CharUnits VBTableChars =
 1097     CharUnits Align = CGM.getContext().getTypeAlignInChars(FI.getReturnType());
 1204                                CharUnits::fromQuantity(4));
 1246     CharUnits Offs = VBT->NonVirtualOffset;
 1344 CharUnits
 1361   CharUnits Adjustment = ML.VFPtrOffset;
 1368     Adjustment = CharUnits::Zero();
 1385     CharUnits Adjustment = getVirtualFunctionPrologueThisAdjustment(GD);
 1410   CharUnits StaticOffset = ML.VFPtrOffset;
 1416     StaticOffset = CharUnits::Zero();
 1428     CharUnits VBaseAlign =
 1497     CharUnits Adjustment = getVirtualFunctionPrologueThisAdjustment(CGF.CurGD);
 1615   CharUnits AddressPoint =
 1619           : CharUnits::Zero();
 1638     CharUnits Offset;
 1720                                                        CharUnits VPtrOffset) {
 2060   CharUnits Alignment =
 2093   CharUnits VBPtrOffset = BaseLayout.getVBPtrOffset();
 2099     CharUnits Offset = DerivedLayout.getVBaseClassOffset(VBase);
 2103     CharUnits CompleteVBPtrOffset = VBT.NonVirtualOffset + VBPtrOffset;
 2142                  CharUnits::fromQuantity(TA.Virtual.Microsoft.VtordispOffset));
 2218 CharUnits MicrosoftCXXABI::getArrayCookieSizeImpl(QualType type) {
 2228                                                   CharUnits cookieSize) {
 2242   CharUnits cookieSize = getArrayCookieSizeImpl(elementType);
 2350   CharUnits Align = CGM.getIntAlign();
 2451   CharUnits GuardAlign = CharUnits::fromQuantity(4);
 2451   CharUnits GuardAlign = CharUnits::fromQuantity(4);
 2672                                        CharUnits NonVirtualBaseAdjustment,
 2689     CharUnits Offs = CharUnits::Zero();
 2689     CharUnits Offs = CharUnits::Zero();
 2704                                        CharUnits offset) {
 2712                                CharUnits::Zero(), /*VBTableIndex=*/0);
 2729     CharUnits FieldOffset = Ctx.toCharUnitsFromBits(Ctx.getFieldOffset(MPD));
 2773   CharUnits NonVirtualBaseAdjustment = CharUnits::Zero();
 2773   CharUnits NonVirtualBaseAdjustment = CharUnits::Zero();
 2953   CharUnits VBPtrAlign;
 2956                                    CharUnits::fromQuantity(CI->getSExtValue()));
 2971   return Builder.CreateAlignedLoad(VBaseOffs, CharUnits::fromQuantity(4),
 3004     CharUnits offs = CharUnits::Zero();
 3004     CharUnits offs = CharUnits::Zero();
 3235                                       CharUnits::fromQuantity(4));
tools/clang/lib/CodeGen/SwiftCallingConv.cpp
   55 static CharUnits getTypeStoreSize(CodeGenModule &CGM, llvm::Type *type) {
   56   return CharUnits::fromQuantity(CGM.getDataLayout().getTypeStoreSize(type));
   59 static CharUnits getTypeAllocSize(CodeGenModule &CGM, llvm::Type *type) {
   60   return CharUnits::fromQuantity(CGM.getDataLayout().getTypeAllocSize(type));
   63 void SwiftAggLowering::addTypedData(QualType type, CharUnits begin) {
   78     auto eltSize = CGM.getContext().getTypeSizeInChars(eltType);
   86     auto eltSize = CGM.getContext().getTypeSizeInChars(eltType);
  105 void SwiftAggLowering::addTypedData(const RecordDecl *record, CharUnits begin) {
  109 void SwiftAggLowering::addTypedData(const RecordDecl *record, CharUnits begin,
  171                                        CharUnits recordBegin,
  181   CharUnits bitfieldByteBegin = ctx.toCharUnitsFromBits(bitfieldBitBegin);
  187   CharUnits bitfieldByteEnd =
  188     ctx.toCharUnitsFromBits(bitfieldBitLast) + CharUnits::One();
  193 void SwiftAggLowering::addTypedData(llvm::Type *type, CharUnits begin) {
  199                                     CharUnits begin, CharUnits end) {
  199                                     CharUnits begin, CharUnits end) {
  212       auto componentSize = getTypeStoreSize(CGM, componentTy);
  232                                          CharUnits begin, CharUnits end) {
  232                                          CharUnits begin, CharUnits end) {
  242       auto eltSize = (end - begin) / numElts;
  259                                 CharUnits begin, CharUnits end) {
  259                                 CharUnits begin, CharUnits end) {
  323     CharUnits eltSize = (end - begin) / vecTy->getNumElements();
  388   CharUnits eltSize = getTypeStoreSize(CGM, eltTy);
  392   CharUnits begin = Entries[index].Begin;
  405 static CharUnits getOffsetAtStartOfUnit(CharUnits offset, CharUnits unitSize) {
  405 static CharUnits getOffsetAtStartOfUnit(CharUnits offset, CharUnits unitSize) {
  405 static CharUnits getOffsetAtStartOfUnit(CharUnits offset, CharUnits unitSize) {
  408   return CharUnits::fromQuantity(offset.getQuantity() & unitMask);
  411 static bool areBytesInSameUnit(CharUnits first, CharUnits second,
  411 static bool areBytesInSameUnit(CharUnits first, CharUnits second,
  412                                CharUnits chunkSize) {
  439                                           CharUnits chunkSize) {
  443   if (!areBytesInSameUnit(first.End - CharUnits::One(), second.Begin,
  459   const CharUnits chunkSize = getMaximumVoluntaryIntegerSize(CGM);
  498     auto begin = orig[i].Begin;
  499     auto end = orig[i].End;
  512       CharUnits localBegin = begin;
  513       CharUnits chunkBegin = getOffsetAtStartOfUnit(localBegin, chunkSize);
  514       CharUnits chunkEnd = chunkBegin + chunkSize;
  515       CharUnits localEnd = std::min(end, chunkEnd);
  518       CharUnits unitSize = CharUnits::One();
  518       CharUnits unitSize = CharUnits::One();
  519       CharUnits unitBegin, unitEnd;
  562   CharUnits lastEnd = CharUnits::Zero();
  562   CharUnits lastEnd = CharUnits::Zero();
  567       auto paddingSize = entry.Begin - lastEnd;
  577           CharUnits::fromQuantity(
  638 CharUnits swiftcall::getMaximumVoluntaryIntegerSize(CodeGenModule &CGM) {
  644 CharUnits swiftcall::getNaturalAlignment(CodeGenModule &CGM, llvm::Type *type) {
  652   return CharUnits::fromQuantity(size);
  675 bool swiftcall::isLegalVectorType(CodeGenModule &CGM, CharUnits vectorSize,
  681 bool swiftcall::isLegalVectorType(CodeGenModule &CGM, CharUnits vectorSize,
  689 swiftcall::splitLegalVectorType(CodeGenModule &CGM, CharUnits vectorSize,
  703 void swiftcall::legalizeVectorType(CodeGenModule &CGM, CharUnits origVectorSize,
  729   CharUnits eltSize = (origVectorSize / numElts);
  730   CharUnits candidateSize = eltSize * candidateNumElts;
  786                                        CharUnits alignmentForIndirect) {
  807     lowering.addTypedData(recordType->getDecl(), CharUnits::Zero(), layout);
  822     lowering.addTypedData(type, CharUnits::Zero());
  825     CharUnits alignment = CGM.getContext().getTypeAlignInChars(type);
tools/clang/lib/CodeGen/TargetInfo.cpp
   70     Builder.CreateAlignedStore(Value, Cell, CharUnits::One());
  131 bool SwiftABIInfo::isLegalVectorTypeForSwift(CharUnits vectorSize,
  259                                                   CharUnits Align) {
  290                                       CharUnits DirectSize,
  291                                       CharUnits DirectAlign,
  292                                       CharUnits SlotSize,
  311   CharUnits FullDirectSize = DirectSize.alignTo(SlotSize);
  342                                 std::pair<CharUnits, CharUnits> ValueInfo,
  342                                 std::pair<CharUnits, CharUnits> ValueInfo,
  343                                 CharUnits SlotSizeAndAlign,
  346   CharUnits DirectSize, DirectAlign;
  381   CharUnits Align = std::min(Addr1.getAlignment(), Addr2.getAlignment());
  628     CharUnits TyAlignForABI = TyInfo.second;
  841                           CharUnits::fromQuantity(4),
 1065                            CharUnits &StackOffset, ABIArgInfo &Info,
 1529     return ABIArgInfo::getIndirect(CharUnits::fromQuantity(4), /*ByVal=*/true);
 1534   return ABIArgInfo::getIndirect(CharUnits::fromQuantity(StackAlign),
 1846                                    CharUnits &StackOffset, ABIArgInfo &Info,
 1849   CharUnits FieldAlign = CharUnits::fromQuantity(4);
 1849   CharUnits FieldAlign = CharUnits::fromQuantity(4);
 1857   CharUnits FieldEnd = StackOffset;
 1860     CharUnits NumBytes = StackOffset - FieldEnd;
 1898   CharUnits StackAlign = CharUnits::fromQuantity(4);
 1898   CharUnits StackAlign = CharUnits::fromQuantity(4);
 1900   CharUnits StackOffset;
 1945   TypeInfo.second = CharUnits::fromQuantity(
 1949                           TypeInfo, CharUnits::fromQuantity(4),
 2020                                CharUnits::One());
 2991   return ABIArgInfo::getIndirect(CharUnits::fromQuantity(Align));
 3691   CharUnits Align = CGF.getContext().getTypeAlignInChars(Ty);
 3692   if (Align > CharUnits::fromQuantity(8)) {
 3815         CharUnits::fromQuantity(getDataLayout().getABITypeAlignment(TyLo)));
 3821         CharUnits::fromQuantity(getDataLayout().getABITypeAlignment(TyHi)));
 3827                       CharUnits::fromQuantity(8));
 3831     std::pair<CharUnits, CharUnits> SizeAlign =
 3831     std::pair<CharUnits, CharUnits> SizeAlign =
 3834     CharUnits TyAlign = SizeAlign.second;
 3846                       CharUnits::fromQuantity(16));
 3857                                 CharUnits::fromQuantity(16));
 3860                                              CharUnits::fromQuantity(16));
 3909                           CharUnits::fromQuantity(8),
 3940   CharUnits Align = getContext().toCharUnitsFromBits(Info.Align);
 4120                           CharUnits::fromQuantity(8),
 4130   CharUnits getParamTypeAlignment(QualType Ty) const;
 4155 CharUnits PPC32_SVR4_ABIInfo::getParamTypeAlignment(QualType Ty) const {
 4161     return CharUnits::fromQuantity(getContext().getTypeSize(Ty) == 128 ? 16
 4175     return CharUnits::fromQuantity(AlignTy->isVectorType() ? 16 : 4);
 4176   return CharUnits::fromQuantity(4);
 4187     CharUnits SlotSize = CharUnits::fromQuantity(4);
 4187     CharUnits SlotSize = CharUnits::fromQuantity(4);
 4254                       CharUnits::fromQuantity(8));
 4260                                                    CharUnits::fromQuantity(32));
 4265     CharUnits RegSize = CharUnits::fromQuantity((isInt || IsSoftFloatABI) ? 4 : 8);
 4265     CharUnits RegSize = CharUnits::fromQuantity((isInt || IsSoftFloatABI) ? 4 : 8);
 4290     CharUnits OverflowAreaAlign = CharUnits::fromQuantity(4);
 4290     CharUnits OverflowAreaAlign = CharUnits::fromQuantity(4);
 4292     CharUnits Size;
 4304     CharUnits Align = CGF.getContext().getTypeAlignInChars(Ty);
 4427   CharUnits getParamTypeAlignment(QualType Ty) const;
 4538 CharUnits PPC64_SVR4_ABIInfo::getParamTypeAlignment(QualType Ty) const {
 4547       return CharUnits::fromQuantity(32);
 4549     return CharUnits::fromQuantity(16);
 4551     return CharUnits::fromQuantity(getContext().getTypeSize(Ty) == 128 ? 16 : 8);
 4576       return CharUnits::fromQuantity(32);
 4578     return CharUnits::fromQuantity(16);
 4580     return CharUnits::fromQuantity(AlignAsType->isVectorType() ? 16 : 8);
 4587       return CharUnits::fromQuantity(32);
 4588     return CharUnits::fromQuantity(16);
 4591   return CharUnits::fromQuantity(8);
 4793     return ABIArgInfo::getIndirect(CharUnits::fromQuantity(ABIAlign),
 4863   CharUnits SlotSize = CharUnits::fromQuantity(8);
 4863   CharUnits SlotSize = CharUnits::fromQuantity(8);
 4872     CharUnits EltSize = TypeInfo.first / 2;
 5034   bool isLegalVectorTypeForSwift(CharUnits totalSize, llvm::Type *eltTy,
 5267 bool AArch64ABIInfo::isLegalVectorTypeForSwift(CharUnits totalSize,
 5334   CharUnits TySize = getContext().getTypeSizeInChars(Ty);
 5335   CharUnits TyAlign = getContext().getTypeUnadjustedAlignInChars(Ty);
 5417                    CharUnits::fromQuantity(IsFPR ? 16 : 8));
 5449       CharUnits BaseOffset = CharUnits::fromQuantity(16 * i + Offset);
 5449       CharUnits BaseOffset = CharUnits::fromQuantity(16 * i + Offset);
 5465     CharUnits SlotSize = BaseAddr.getAlignment();
 5469       CharUnits Offset = SlotSize - TySize;
 5503                       std::max(CharUnits::fromQuantity(8), TyAlign));
 5506   CharUnits StackSlotSize = CharUnits::fromQuantity(8);
 5506   CharUnits StackSlotSize = CharUnits::fromQuantity(8);
 5507   CharUnits StackSize;
 5522     CharUnits Offset = StackSlotSize - TySize;
 5553   CharUnits SlotSize = CharUnits::fromQuantity(8);
 5553   CharUnits SlotSize = CharUnits::fromQuantity(8);
 5583                           CharUnits::fromQuantity(8),
 5672   bool isLegalVectorTypeForSwift(CharUnits totalSize, llvm::Type *eltTy,
 5929       getContext().getTypeSizeInChars(Ty) > CharUnits::fromQuantity(16)) {
 5934         CharUnits::fromQuantity(getContext().getTypeAlign(Ty) / 8), false);
 5950   if (getContext().getTypeSizeInChars(Ty) > CharUnits::fromQuantity(64)) {
 5952     return ABIArgInfo::getIndirect(CharUnits::fromQuantity(ABIAlign),
 6240 bool ARMABIInfo::isLegalVectorTypeForSwift(CharUnits vectorSize,
 6287   CharUnits SlotSize = CharUnits::fromQuantity(4);
 6287   CharUnits SlotSize = CharUnits::fromQuantity(4);
 6296   CharUnits TySize = getContext().getTypeSizeInChars(Ty);
 6297   CharUnits TyAlignForABI = getContext().getTypeUnadjustedAlignInChars(Ty);
 6303   if (TySize > CharUnits::fromQuantity(16) && isIllegalVectorType(Ty)) {
 6308   } else if (TySize > CharUnits::fromQuantity(16) &&
 6319     TyAlignForABI = std::max(TyAlignForABI, CharUnits::fromQuantity(4));
 6320     TyAlignForABI = std::min(TyAlignForABI, CharUnits::fromQuantity(8));
 6323     TyAlignForABI = std::max(TyAlignForABI, CharUnits::fromQuantity(4));
 6324     TyAlignForABI = std::min(TyAlignForABI, CharUnits::fromQuantity(16));
 6326     TyAlignForABI = CharUnits::fromQuantity(4);
 6329   std::pair<CharUnits, CharUnits> TyInfo = { TySize, TyAlignForABI };
 6329   std::pair<CharUnits, CharUnits> TyInfo = { TySize, TyAlignForABI };
 6695   CharUnits UnpaddedSize;
 6696   CharUnits DirectAlign;
 6699     UnpaddedSize = DirectAlign = CharUnits::fromQuantity(8);
 6708   CharUnits PaddedSize = CharUnits::fromQuantity(8);
 6708   CharUnits PaddedSize = CharUnits::fromQuantity(8);
 6710     PaddedSize = CharUnits::fromQuantity(16);
 6713   CharUnits Padding = (PaddedSize - UnpaddedSize);
 6743   CharUnits RegPadding;
 7269     std::min(TyInfo.second, CharUnits::fromQuantity(StackAlignInBytes));
 7272   CharUnits ArgSlotSize = CharUnits::fromQuantity(MinABIStackAlignInBytes);
 7272   CharUnits ArgSlotSize = CharUnits::fromQuantity(MinABIStackAlignInBytes);
 7542                           CharUnits::fromQuantity(4),
 7608   return ABIArgInfo::getIndirect(CharUnits::fromQuantity(4), /*ByVal=*/true,
 8358   CharUnits SlotSize = CharUnits::fromQuantity(8);
 8358   CharUnits SlotSize = CharUnits::fromQuantity(8);
 8367   CharUnits Stride;
 8376     CharUnits Offset = SlotSize - TypeInfo.first;
 8383     Stride = CharUnits::fromQuantity(AllocSize).alignTo(SlotSize);
 8522   return ABIArgInfo::getIndirect(CharUnits::fromQuantity(4), /*ByVal=*/true,
 8530                           CharUnits::fromQuantity(4), true);
 8716   CharUnits SlotSize = CharUnits::fromQuantity(4);
 8716   CharUnits SlotSize = CharUnits::fromQuantity(4);
 8721   CharUnits TypeAlign = getContext().getTypeAlignInChars(Ty);
 8728   CharUnits ArgSize = CharUnits::Zero();
 8728   CharUnits ArgSize = CharUnits::Zero();
 8736     ArgSize = CharUnits::Zero();
 8741     ArgSize = CharUnits::fromQuantity(
 9254   bool detectFPCCEligibleStructHelper(QualType Ty, CharUnits CurOff,
 9256                                       CharUnits &Field1Off,
 9258                                       CharUnits &Field2Off) const;
 9278                                 CharUnits &Field1Off, llvm::Type *&Field2Ty,
 9279                                 CharUnits &Field2Off, int &NeededArgGPRs,
 9282                                                CharUnits Field1Off,
 9284                                                CharUnits Field2Off) const;
 9322 bool RISCVABIInfo::detectFPCCEligibleStructHelper(QualType Ty, CharUnits CurOff,
 9324                                                   CharUnits &Field1Off,
 9326                                                   CharUnits &Field2Off) const {
 9373     CharUnits EltSize = getContext().getTypeSizeInChars(EltTy);
 9435                                             CharUnits &Field1Off,
 9437                                             CharUnits &Field2Off,
 9445       Ty, CharUnits::Zero(), Field1Ty, Field1Off, Field2Ty, Field2Off);
 9466     llvm::Type *Field1Ty, CharUnits Field1Off, llvm::Type *Field2Ty,
 9467     CharUnits Field2Off) const {
 9483   CharUnits Field2Align =
 9484       CharUnits::fromQuantity(getDataLayout().getABITypeAlignment(Field2Ty));
 9485   CharUnits Field1Size =
 9486       CharUnits::fromQuantity(getDataLayout().getTypeStoreSize(Field1Ty));
 9487   CharUnits Field2OffNoPadNoPack = Field1Size.alignTo(Field2Align);
 9489   CharUnits Padding = CharUnits::Zero();
 9489   CharUnits Padding = CharUnits::Zero();
 9552     CharUnits Field1Off = CharUnits::Zero();
 9552     CharUnits Field1Off = CharUnits::Zero();
 9553     CharUnits Field2Off = CharUnits::Zero();
 9553     CharUnits Field2Off = CharUnits::Zero();
 9636   CharUnits SlotSize = CharUnits::fromQuantity(XLen / 8);
 9636   CharUnits SlotSize = CharUnits::fromQuantity(XLen / 8);
 9645   std::pair<CharUnits, CharUnits> SizeAndAlign =
 9645   std::pair<CharUnits, CharUnits> SizeAndAlign =
tools/clang/lib/Frontend/LayoutOverrideSource.cpp
  158   llvm::DenseMap<const CXXRecordDecl *, CharUnits> &BaseOffsets,
  159   llvm::DenseMap<const CXXRecordDecl *, CharUnits> &VirtualBaseOffsets)
tools/clang/lib/Frontend/Rewrite/RewriteModernObjC.cpp
 6823       CharUnits Size = Context->getTypeSizeInChars(IVQT);
tools/clang/lib/Sema/MultiplexExternalSemaSource.cpp
  184                   llvm::DenseMap<const CXXRecordDecl *, CharUnits> &BaseOffsets,
  185           llvm::DenseMap<const CXXRecordDecl *, CharUnits> &VirtualBaseOffsets){
tools/clang/lib/Sema/SemaCast.cpp
  924     CharUnits Offset = CharUnits::Zero();
  924     CharUnits Offset = CharUnits::Zero();
 2816   CharUnits DestSize = Self.Context.getTypeSizeInChars(DestType);
 2817   CharUnits SourceSize = Self.Context.getTypeSizeInChars(SrcType);
tools/clang/lib/Sema/SemaChecking.cpp
 6145     CharUnits ArgSize = Context.getTypeSizeInChars(Arg.get()->getType());
13121 static CharUnits getDeclAlign(Expr *E, CharUnits TypeAlign,
13121 static CharUnits getDeclAlign(Expr *E, CharUnits TypeAlign,
13151   CharUnits DestAlign = Context.getTypeAlignInChars(DestPointee);
13165   CharUnits SrcAlign = Context.getTypeAlignInChars(SrcPointee);
14630                                          CharUnits Alignment) {
14668     llvm::function_ref<void(Expr *, RecordDecl *, FieldDecl *, CharUnits)>
14719   CharUnits ExpectedAlignment = Context.getTypeAlignInChars(E->getType());
14726   CharUnits Offset;
14733   CharUnits CompleteObjectAlignment = Context.getTypeAlignInChars(
14759     CharUnits Alignment;
tools/clang/lib/Sema/SemaDecl.cpp
12661       CharUnits MaxAlignChars = Context.toCharUnitsFromBits(MaxAlign);
tools/clang/lib/Sema/SemaDeclAttr.cpp
 3792     CharUnits RequestedAlign = Context.toCharUnitsFromBits(Align);
 3793     CharUnits NaturalAlign = Context.getTypeAlignInChars(UnderlyingTy);
tools/clang/lib/Sema/SemaExpr.cpp
 5304   Optional<CharUnits> ArgSize =
 5306   Optional<CharUnits> ParmSize = getASTContext().getTypeSizeInCharsIfKnown(CAT);
 9769         CharUnits ElementSize = Context.getTypeSizeInChars(rpointee);
tools/clang/lib/Sema/SemaExprCXX.cpp
  957     CharUnits TypeAlign = Context.getTypeAlignInChars(Ty);
  958     CharUnits ExnObjAlign = Context.getExnObjectAlignment();
tools/clang/lib/Sema/SemaStmtAsm.cpp
  827     CharUnits Result = Context.toCharUnitsFromBits(RL.getFieldOffset(i));
tools/clang/lib/StaticAnalyzer/Checkers/ArrayBoundCheckerV2.cpp
  284                               NonLoc baseVal, CharUnits scaling,
tools/clang/lib/StaticAnalyzer/Checkers/CastSizeChecker.cpp
   48 static bool evenFlexibleArraySize(ASTContext &Ctx, CharUnits RegionSize,
   49                                   CharUnits TypeSize, QualType ToPointeeTy) {
   63   CharUnits FlexSize;
   80   CharUnits Left = RegionSize - TypeSize;
  117   CharUnits regionSize = CharUnits::fromQuantity(extentInt->getSExtValue());
  117   CharUnits regionSize = CharUnits::fromQuantity(extentInt->getSExtValue());
  118   CharUnits typeSize = C.getASTContext().getTypeSizeInChars(ToPointeeTy);
tools/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
 1402   CharUnits TypeSize = AstContext.getTypeSizeInChars(ElementType);
tools/clang/lib/StaticAnalyzer/Checkers/PaddingChecker.cpp
   94     CharUnits BaselinePad = calculateBaselinePad(RD, ASTContext, RL);
   98     CharUnits OptimalPad;
  103     CharUnits DiffPad = PadMultiplier * (BaselinePad - OptimalPad);
  190   static CharUnits calculateBaselinePad(const RecordDecl *RD,
  193     CharUnits PaddingSum;
  194     CharUnits Offset = ASTContext.toCharUnitsFromBits(RL.getFieldOffset(0));
  200       CharUnits FieldSize = ASTContext.getTypeSizeInChars(FD->getType());
  202       CharUnits FieldOffset = ASTContext.toCharUnitsFromBits(FieldOffsetBits);
  226   static std::pair<CharUnits, SmallVector<const FieldDecl *, 20>>
  230       CharUnits Align;
  231       CharUnits Size;
  265     CharUnits NewOffset = ASTContext.toCharUnitsFromBits(RL.getFieldOffset(0));
  266     CharUnits NewPad;
  275       CharUnits CurAlignment = CharUnits::fromQuantity(CurAlignmentBits);
  275       CharUnits CurAlignment = CharUnits::fromQuantity(CurAlignmentBits);
  276       FieldInfo InsertPoint = {CurAlignment, CharUnits::Zero(), nullptr};
  293         CharUnits NextOffset = NewOffset.alignTo(Fields[0].Align);
  299     CharUnits NewSize = NewOffset.alignTo(RL.getAlignment());
  305       const RecordDecl *RD, CharUnits BaselinePad, CharUnits OptimalPad,
  305       const RecordDecl *RD, CharUnits BaselinePad, CharUnits OptimalPad,
tools/clang/lib/StaticAnalyzer/Checkers/VLASizeChecker.cpp
  161   CharUnits EleSize = Ctx.getTypeSizeInChars(VLA->getElementType());
tools/clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp
  895     CharUnits amt = CharUnits::fromQuantity(Value.getZExtValue());
  895     CharUnits amt = CharUnits::fromQuantity(Value.getZExtValue());
tools/clang/lib/StaticAnalyzer/Core/MemRegion.cpp
  175   CharUnits size = Ctx.getTypeSizeInChars(T);
 1276   return RegionRawOffset(superR, CharUnits::fromQuantity(offset));
 1381       CharUnits BaseOffset;
tools/clang/lib/StaticAnalyzer/Core/RegionStore.cpp
 1402   CharUnits RegionSize = CharUnits::fromQuantity(SizeInt->getSExtValue());
 1402   CharUnits RegionSize = CharUnits::fromQuantity(SizeInt->getSExtValue());
 1411   CharUnits EleSize = Ctx.getTypeSizeInChars(EleTy);
tools/clang/lib/StaticAnalyzer/Core/Store.cpp
  172       CharUnits off = rawOff.getOffset();
  202         CharUnits pointeeTySize = Ctx.getTypeSizeInChars(PointeeTy);
tools/clang/tools/extra/clang-tidy/bugprone/SizeofExpressionCheck.cpp
   51 CharUnits getSizeOfType(const ASTContext &Ctx, const Type *Ty) {
   54     return CharUnits::Zero();
  288     CharUnits NumeratorSize = getSizeOfType(Ctx, NumTy);
  289     CharUnits DenominatorSize = getSizeOfType(Ctx, DenomTy);
  290     CharUnits ElementSize = getSizeOfType(Ctx, ElementTy);
  292     if (DenominatorSize > CharUnits::Zero() &&
  296     } else if (ElementSize > CharUnits::Zero() &&
  297                DenominatorSize > CharUnits::Zero() &&
tools/clang/tools/extra/clang-tidy/cppcoreguidelines/SlicingCheck.cpp
  124   const CharUnits StateSize =
tools/lldb/include/lldb/Symbol/ClangASTContext.h
  445       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  447       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
tools/lldb/include/lldb/Symbol/ClangASTImporter.h
   93     llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits> base_offsets;
   94     llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  127       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  129       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
tools/lldb/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h
   36       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
   38       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
   99       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  101       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
tools/lldb/source/Plugins/ExpressionParser/Clang/ASTUtils.h
  123       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  125       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  416       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  418       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
tools/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
 1655 typedef llvm::DenseMap<const CXXRecordDecl *, CharUnits> BaseOffsetMap;
 1658 static bool ImportOffsetMap(llvm::DenseMap<const D *, O> &destination_map,
 1659                             llvm::DenseMap<const D *, O> &source_map,
 1666   typedef llvm::DenseMap<const D *, O> MapType;
 1718     CharUnits base_offset;
tools/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h
  137       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  139       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  240         llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  242         llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
tools/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCDeclVendor.cpp
  135       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  137       llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
tools/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
 2133                              clang::CharUnits>::const_iterator base_pos,
 2147                              clang::CharUnits>::const_iterator vbase_pos,
 3055                 clang::CharUnits::fromQuantity(member_byte_offset)));
tools/lldb/source/Plugins/SymbolFile/NativePDB/UdtRecordCompleter.cpp
   97   auto offset = clang::CharUnits::fromQuantity(base.getBaseOffset());
   97   auto offset = clang::CharUnits::fromQuantity(base.getBaseOffset());
tools/lldb/source/Plugins/SymbolFile/PDB/PDBASTParser.cpp
 1324     auto offset = clang::CharUnits::fromQuantity(base->getOffset());
 1324     auto offset = clang::CharUnits::fromQuantity(base->getOffset());
tools/lldb/source/Symbol/ClangASTContext.cpp
  291   clang::CharUnits base_offset_offset =
 9865     llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
 9867     llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
tools/lldb/source/Symbol/ClangASTImporter.cpp
  574     llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
  576     llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
tools/lldb/source/Symbol/ClangExternalASTSourceCallbacks.cpp
   78     llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits> &BaseOffsets,
   79     llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
usr/include/c++/7.4.0/array
   50       typedef _Tp _Type[_Nm];
   51       typedef __is_swappable<_Tp> _Is_swappable;
   52       typedef __is_nothrow_swappable<_Tp> _Is_nothrow_swappable;
   54       static constexpr _Tp&
   58       static constexpr _Tp*
   96       typedef _Tp 	    			      value_type;
  109       typedef _GLIBCXX_STD_C::__array_traits<_Tp, _Nm> _AT_Type;
usr/include/c++/7.4.0/bits/algorithmfwd.h
  369     const _Tp&
  370     max(const _Tp&, const _Tp&);
  370     max(const _Tp&, const _Tp&);
  382     const _Tp&
  383     min(const _Tp&, const _Tp&);
  383     min(const _Tp&, const _Tp&);
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*;
  474 	construct(allocator_type& __a, _Up* __p, _Args&&... __args)
  474 	construct(allocator_type& __a, _Up* __p, _Args&&... __args)
  486 	destroy(allocator_type& __a, _Up* __p)
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/invoke.h
   66     { return (__invfwd<_Tp>(__t).*__f)(std::forward<_Args>(__args)...); }
   96 					std::forward<_Args>(__args)...);
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
  104     : public __and_<__not_<is_nothrow_move_constructible<_Tp>>,
  105                     is_copy_constructible<_Tp>>::type { };
  198       _Tp __tmp = _GLIBCXX_MOVE(__a);
usr/include/c++/7.4.0/bits/stl_algo.h
 2040 		  const _Tp& __val, _Compare __comp)
 2078 		const _Tp& __val)
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)...); }
  204 	     allocator<_Tp>&)
usr/include/c++/7.4.0/bits/stl_function.h
  121       typedef _Arg1 	first_argument_type; 
  124       typedef _Arg2 	second_argument_type;
  381     struct less : public binary_function<_Tp, _Tp, bool>
  381     struct less : public binary_function<_Tp, _Tp, bool>
  385       operator()(const _Tp& __x, const _Tp& __y) const
  385       operator()(const _Tp& __x, const _Tp& __y) const
usr/include/c++/7.4.0/bits/stl_iterator.h
 1224     __make_move_if_noexcept_iterator(_Tp* __i)
usr/include/c++/7.4.0/bits/stl_iterator_base_types.h
  123       typedef _Tp        value_type;
  181       typedef _Tp                         value_type;
  183       typedef _Tp*                        pointer;
  184       typedef _Tp&                        reference;
  192       typedef _Tp                         value_type;
  194       typedef const _Tp*                  pointer;
  195       typedef const _Tp&                  reference;
usr/include/c++/7.4.0/bits/stl_map.h
  103       typedef _Tp					mapped_type;
  104       typedef std::pair<const _Key, _Tp>		value_type;
usr/include/c++/7.4.0/bits/stl_pair.h
  100 	return __and_<is_constructible<_T1, const _U1&>,
  100 	return __and_<is_constructible<_T1, const _U1&>,
  101 		      is_constructible<_T2, const _U2&>>::value;
  101 		      is_constructible<_T2, const _U2&>>::value;
  107 	return __and_<is_convertible<const _U1&, _T1>,
  107 	return __and_<is_convertible<const _U1&, _T1>,
  108 		      is_convertible<const _U2&, _T2>>::value;
  108 		      is_convertible<const _U2&, _T2>>::value;
  114 	return __and_<is_constructible<_T1, _U1&&>,
  114 	return __and_<is_constructible<_T1, _U1&&>,
  115 		      is_constructible<_T2, _U2&&>>::value;
  115 		      is_constructible<_T2, _U2&&>>::value;
  121 	return __and_<is_convertible<_U1&&, _T1>,
  121 	return __and_<is_convertible<_U1&&, _T1>,
  122 		      is_convertible<_U2&&, _T2>>::value;
  122 		      is_convertible<_U2&&, _T2>>::value;
  128 	using __do_converts = __and_<is_convertible<const _U1&, _T1>,
  128 	using __do_converts = __and_<is_convertible<const _U1&, _T1>,
  129 				  is_convertible<_U2&&, _T2>>;
  129 				  is_convertible<_U2&&, _T2>>;
  133 	return __and_<is_constructible<_T1, const _U1&>,
  133 	return __and_<is_constructible<_T1, const _U1&>,
  134 		      is_constructible<_T2, _U2&&>,
  134 		      is_constructible<_T2, _U2&&>,
  142 	using __do_converts = __and_<is_convertible<_U1&&, _T1>,
  142 	using __do_converts = __and_<is_convertible<_U1&&, _T1>,
  143 				  is_convertible<const _U2&, _T2>>;
  143 				  is_convertible<const _U2&, _T2>>;
  147 	return __and_<is_constructible<_T1, _U1&&>,
  147 	return __and_<is_constructible<_T1, _U1&&>,
  148 		      is_constructible<_T2, const _U2&&>,
  148 		      is_constructible<_T2, const _U2&&>,
  209     : private __pair_base<_T1, _T2>
  209     : private __pair_base<_T1, _T2>
  211       typedef _T1 first_type;    /// @c first_type is the first bound type
  212       typedef _T2 second_type;   /// @c second_type is the second bound type
  214       _T1 first;                 /// @c first is a copy of the first object
  215       _T2 second;                /// @c second is a copy of the second object
  252       using _PCCP = _PCC<true, _T1, _T2>;
  252       using _PCCP = _PCC<true, _T1, _T2>;
  260       constexpr pair(const _T1& __a, const _T2& __b)
  260       constexpr pair(const _T1& __a, const _T2& __b)
  269       explicit constexpr pair(const _T1& __a, const _T2& __b)
  269       explicit constexpr pair(const _T1& __a, const _T2& __b)
  283 			    _T1, _T2>;
  283 			    _T1, _T2>;
  291         constexpr pair(const pair<_U1, _U2>& __p)
  311        constexpr pair(_U1&& __x, const _T2& __y)
  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)
  325        constexpr pair(const _T1& __x, _U2&& __y)
  332        explicit pair(const _T1& __x, _U2&& __y)
  341 	constexpr pair(_U1&& __x, _U2&& __y)
  341 	constexpr pair(_U1&& __x, _U2&& __y)
  342 	: first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { }
  342 	: first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { }
  360 	constexpr pair(pair<_U1, _U2>&& __p)
  362 	  second(std::forward<_U2>(__p.second)) { }
  379 		__and_<is_copy_assignable<_T1>,
  380 		       is_copy_assignable<_T2>>::value,
  390 		__and_<is_move_assignable<_T1>,
  391 		       is_move_assignable<_T2>>::value,
  402       typename enable_if<__and_<is_assignable<_T1&, const _U1&>,
  402       typename enable_if<__and_<is_assignable<_T1&, const _U1&>,
  403 				is_assignable<_T2&, const _U2&>>::value,
  403 				is_assignable<_T2&, const _U2&>>::value,
  405 	operator=(const pair<_U1, _U2>& __p)
  405 	operator=(const pair<_U1, _U2>& __p)
  413       typename enable_if<__and_<is_assignable<_T1&, _U1&&>,
  413       typename enable_if<__and_<is_assignable<_T1&, _U1&&>,
  414 				is_assignable<_T2&, _U2&&>>::value,
  414 				is_assignable<_T2&, _U2&&>>::value,
  416 	operator=(pair<_U1, _U2>&& __p)
  416 	operator=(pair<_U1, _U2>&& __p)
  495     swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y)
  495     swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y)
  495     swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y)
  495     swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y)
  522     constexpr pair<typename __decay_and_strip<_T1>::__type,
  523                    typename __decay_and_strip<_T2>::__type>
  524     make_pair(_T1&& __x, _T2&& __y)
  524     make_pair(_T1&& __x, _T2&& __y)
  526       typedef typename __decay_and_strip<_T1>::__type __ds_type1;
  527       typedef typename __decay_and_strip<_T2>::__type __ds_type2;
  529       return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y));
  529       return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y));
usr/include/c++/7.4.0/bits/stl_uninitialized.h
  288 			   _ForwardIterator __result, allocator<_Tp>&)
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*
 1483 	_M_realloc_insert(iterator __position, _Args&&... __args);
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;
   84 	new_allocator(const new_allocator<_Tp1>&) _GLIBCXX_USE_NOEXCEPT { }
  111 	return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));
  130       { return size_t(-1) / sizeof(_Tp); }
  135 	construct(_Up* __p, _Args&&... __args)
  135 	construct(_Up* __p, _Args&&... __args)
  136 	{ ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
  140 	destroy(_Up* __p) { __p->~_Up(); }
usr/include/c++/7.4.0/functional
  110 	= _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>;
  411 	_Safe_tuple_element_t<(is_placeholder<_Arg>::value - 1), _Tuple>&&
  411 	_Safe_tuple_element_t<(is_placeholder<_Arg>::value - 1), _Tuple>&&
  547 	operator()(_Args&&... __args)
  550 	      std::forward_as_tuple(std::forward<_Args>(__args)...),
  558 	operator()(_Args&&... __args) const
  576 	operator()(_Args&&... __args) volatile
  588 	operator()(_Args&&... __args) const volatile
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/tuple
   56     struct __is_empty_non_tuple : is_empty<_Tp> { };
  125       constexpr _Head_base(const _Head& __h)
  132         constexpr _Head_base(_UHead&& __h)
  133 	: _M_head_impl(std::forward<_UHead>(__h)) { }
  159       static constexpr _Head&
  162       static constexpr const _Head&
  165       _Head _M_head_impl;
  186     : public _Tuple_impl<_Idx + 1, _Tail...>,
  187       private _Head_base<_Idx, _Head>
  191       typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited;
  192       typedef _Head_base<_Idx, _Head> _Base;
  194       static constexpr _Head&
  197       static constexpr const _Head&
  210       constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail)
  210       constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail)
  216         constexpr _Tuple_impl(_UHead&& __head, _UTail&&... __tail)
  216         constexpr _Tuple_impl(_UHead&& __head, _UTail&&... __tail)
  217 	: _Inherited(std::forward<_UTail>(__tail)...),
  218 	  _Base(std::forward<_UHead>(__head)) { }
  227 	_Base(std::forward<_Head>(_M_head(__in))) { }
  230         constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in)
  235         constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in)
  235         constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in)
  242 	_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a)
  248 		    const _Head& __head, const _Tail&... __tail)
  248 		    const _Head& __head, const _Tail&... __tail)
  262         _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
  268 	_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
  350       static constexpr _Head&
  353       static constexpr const _Head&
  360       constexpr _Tuple_impl(const _Head& __head)
  365         constexpr _Tuple_impl(_UHead&& __head)
  366 	: _Base(std::forward<_UHead>(__head)) { }
  390 		    const _Head& __head)
  473       return __and_<is_constructible<_Elements, const _UElements&>...>::value;
  473       return __and_<is_constructible<_Elements, const _UElements&>...>::value;
  479       return __and_<is_convertible<const _UElements&, _Elements>...>::value;
  479       return __and_<is_convertible<const _UElements&, _Elements>...>::value;
  485       return __and_<is_constructible<_Elements, _UElements&&>...>::value;
  485       return __and_<is_constructible<_Elements, _UElements&&>...>::value;
  491       return __and_<is_convertible<_UElements&&, _Elements>...>::value;
  491       return __and_<is_convertible<_UElements&&, _Elements>...>::value;
  508       return  __not_<is_same<tuple<_Elements...>,
  556     class tuple : public _Tuple_impl<0, _Elements...>
  558       typedef _Tuple_impl<0, _Elements...> _Inherited;
  598             _Elements...>;
  608         constexpr tuple(const _Elements&... __elements)
  619       explicit constexpr tuple(const _Elements&... __elements)
  628                       _Elements...>;
  636                       _Elements...>;
  646         constexpr tuple(_UElements&&... __elements)
  647         : _Inherited(std::forward<_UElements>(__elements)...) { }
  668             _Elements...>;
  730 	      const _Elements&... __elements)
  741                        const _Elements&... __elements)
  767 	tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in)
  771 	tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in)
  947         constexpr tuple(const _T1& __a1, const _T2& __a2)
  947         constexpr tuple(const _T1& __a1, const _T2& __a2)
  956         explicit constexpr tuple(const _T1& __a1, const _T2& __a2)
  956         explicit constexpr tuple(const _T1& __a1, const _T2& __a2)
  971         constexpr tuple(_U1&& __a1, _U2&& __a2)
  971         constexpr tuple(_U1&& __a1, _U2&& __a2)
 1066 	tuple(allocator_arg_t __tag, const _Alloc& __a)
 1078 	      const _T1& __a1, const _T2& __a2)
 1078 	      const _T1& __a1, const _T2& __a2)
 1090 	      const _T1& __a1, const _T2& __a2)
 1090 	      const _T1& __a1, const _T2& __a2)
 1241         operator=(const pair<_U1, _U2>& __in)
 1241         operator=(const pair<_U1, _U2>& __in)
 1250         operator=(pair<_U1, _U2>&& __in)
 1250         operator=(pair<_U1, _U2>&& __in)
 1252 	  this->_M_head(*this) = std::forward<_U1>(__in.first);
 1253 	  this->_M_tail(*this)._M_head(*this) = std::forward<_U2>(__in.second);
 1280     : tuple_element<__i - 1, tuple<_Tail...> > { };
 1288       typedef _Head type;
 1302     constexpr _Head&
 1303     __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept
 1303     __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept
 1304     { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); }
 1304     { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); }
 1307     constexpr const _Head&
 1308     __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept
 1308     __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept
 1309     { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); }
 1309     { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); }
 1313     constexpr __tuple_element_t<__i, tuple<_Elements...>>&
 1313     constexpr __tuple_element_t<__i, tuple<_Elements...>>&
 1313     constexpr __tuple_element_t<__i, tuple<_Elements...>>&
 1314     get(tuple<_Elements...>& __t) noexcept
 1319     constexpr const __tuple_element_t<__i, tuple<_Elements...>>&
 1319     constexpr const __tuple_element_t<__i, tuple<_Elements...>>&
 1319     constexpr const __tuple_element_t<__i, tuple<_Elements...>>&
 1320     get(const tuple<_Elements...>& __t) noexcept
 1325     constexpr __tuple_element_t<__i, tuple<_Elements...>>&&
 1325     constexpr __tuple_element_t<__i, tuple<_Elements...>>&&
 1325     constexpr __tuple_element_t<__i, tuple<_Elements...>>&&
 1326     get(tuple<_Elements...>&& __t) noexcept
 1329       return std::forward<__element_type&&>(std::get<__i>(__t));
 1410     operator<(const tuple<_TElements...>& __t,
 1411 	      const tuple<_UElements...>& __u)
 1415       using __compare = __tuple_compare<tuple<_TElements...>,
 1416 					tuple<_UElements...>,
 1447     constexpr tuple<typename __decay_and_strip<_Elements>::__type...>
 1448     make_tuple(_Elements&&... __args)
 1450       typedef tuple<typename __decay_and_strip<_Elements>::__type...>
 1452       return __result_type(std::forward<_Elements>(__args)...);
 1458     constexpr tuple<_Elements&&...>
 1459     forward_as_tuple(_Elements&&... __args) noexcept
 1460     { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); }
 1588     constexpr tuple<_Elements&...>
 1589     tie(_Elements&... __args) noexcept
usr/include/c++/7.4.0/type_traits
  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
  762     typename add_rvalue_reference<_Tp>::type declval() noexcept;
  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>
 1215     : public __and_<is_constructible<_Tp, _Args...>,
 1216 		    __is_nt_constructible_impl<_Tp, _Args...>>
 1246     : public is_nothrow_constructible<_Tp, _Tp&&>
 1246     : public is_nothrow_constructible<_Tp, _Tp&&>
 1252     : public __is_nothrow_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>
 1352     : public is_nothrow_assignable<_Tp&, _Tp&&>
 1352     : public is_nothrow_assignable<_Tp&, _Tp&&>
 1358     : public __is_nt_move_assignable_impl<_Tp>
 1377     static void __helper(const _Tp&);
 1380     static true_type __test(const _Tp&,
 1381                             decltype(__helper<const _Tp&>({}))* = 0);
 1390     typedef decltype(__test(declval<_Tp>())) type;
 1395       : public __is_implicitly_default_constructible_impl<_Tp>::type
 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; };
 1558     { 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; };
 1637     { typedef _Tp   type; };
 1659     { typedef _Tp&&   type; };
 1664     : public __add_rvalue_reference_helper<_Tp>
 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;
 2253     inline typename add_rvalue_reference<_Tp>::type
 2285       (std::declval<_Tp1>().*std::declval<_Fp>())(std::declval<_Args>()...)
 2296       typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type;
 2574       typename remove_reference<_Tp>::type>::type>::type
 2579     typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>,
 2580 			      is_move_constructible<_Tp>,
 2581 			      is_move_assignable<_Tp>>::value>::type
 2582     swap(_Tp&, _Tp&)
 2582     swap(_Tp&, _Tp&)
 2609           noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>()))
 2609           noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>()))
 2629       typedef decltype(__test<_Tp>(0)) type;
 2639     : public __is_nothrow_swappable_impl<_Tp>::type
 2776 	    std::declval<_Args>()...));