diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2020-12-02 15:33:08 -0800 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2020-12-04 12:34:49 -0800 |
commit | d10f9863a5ac1cb681af07719650c44b48f289ce (patch) | |
tree | 5f5a324474b874d32726f3607937d25a60daf046 | |
parent | fa4c3f70ff0768a270b0620dc6d158ed1205ec4e (diff) | |
download | llvm-d10f9863a5ac1cb681af07719650c44b48f289ce.zip llvm-d10f9863a5ac1cb681af07719650c44b48f289ce.tar.gz llvm-d10f9863a5ac1cb681af07719650c44b48f289ce.tar.bz2 |
ADT: Migrate users of AlignedCharArrayUnion to std::aligned_union_t, NFC
Prepare to delete `AlignedCharArrayUnion` by migrating its users over to
`std::aligned_union_t`.
I will delete `AlignedCharArrayUnion` and its tests in a follow-up
commit so that it's easier to revert in isolation in case some
downstream wants to keep using it.
Differential Revision: https://reviews.llvm.org/D92516
-rw-r--r-- | clang/include/clang/AST/APValue.h | 9 | ||||
-rw-r--r-- | clang/include/clang/AST/ASTContext.h | 1 | ||||
-rw-r--r-- | clang/include/clang/AST/ASTTypeTraits.h | 7 | ||||
-rw-r--r-- | clang/include/clang/AST/ParentMapContext.h | 2 | ||||
-rw-r--r-- | clang/include/clang/Frontend/PrecompiledPreamble.h | 3 | ||||
-rw-r--r-- | clang/include/clang/Sema/Overload.h | 1 | ||||
-rw-r--r-- | clang/lib/DirectoryWatcher/linux/DirectoryWatcher-linux.cpp | 1 | ||||
-rw-r--r-- | clang/lib/DirectoryWatcher/windows/DirectoryWatcher-windows.cpp | 1 | ||||
-rw-r--r-- | clang/lib/Lex/PPDirectives.cpp | 1 | ||||
-rw-r--r-- | llvm/include/llvm/ADT/DenseMap.h | 5 | ||||
-rw-r--r-- | llvm/include/llvm/ADT/IntervalMap.h | 4 | ||||
-rw-r--r-- | llvm/include/llvm/CodeGen/DIE.h | 7 | ||||
-rw-r--r-- | llvm/include/llvm/CodeGen/SelectionDAGNodes.h | 8 | ||||
-rw-r--r-- | llvm/include/llvm/Support/Error.h | 5 | ||||
-rw-r--r-- | llvm/include/llvm/Support/ErrorOr.h | 5 | ||||
-rw-r--r-- | llvm/include/llvm/Support/JSON.h | 4 | ||||
-rw-r--r-- | llvm/include/llvm/Support/TrailingObjects.h | 1 | ||||
-rw-r--r-- | llvm/include/llvm/Support/YAMLTraits.h | 5 | ||||
-rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp | 3 |
19 files changed, 29 insertions, 44 deletions
diff --git a/clang/include/clang/AST/APValue.h b/clang/include/clang/AST/APValue.h index eded348..d6a33c1 100644 --- a/clang/include/clang/AST/APValue.h +++ b/clang/include/clang/AST/APValue.h @@ -20,7 +20,7 @@ #include "llvm/ADT/FoldingSet.h" #include "llvm/ADT/PointerIntPair.h" #include "llvm/ADT/PointerUnion.h" -#include "llvm/Support/AlignOf.h" +#include <type_traits> namespace clang { class AddrLabelExpr; @@ -286,9 +286,10 @@ private: struct MemberPointerData; // We ensure elsewhere that Data is big enough for LV and MemberPointerData. - typedef llvm::AlignedCharArrayUnion<void *, APSInt, APFloat, ComplexAPSInt, - ComplexAPFloat, Vec, Arr, StructData, - UnionData, AddrLabelDiffData> DataType; + typedef std::aligned_union_t<1, void *, APSInt, APFloat, ComplexAPSInt, + ComplexAPFloat, Vec, Arr, StructData, UnionData, + AddrLabelDiffData> + DataType; static const size_t DataSize = sizeof(DataType); DataType Data; diff --git a/clang/include/clang/AST/ASTContext.h b/clang/include/clang/AST/ASTContext.h index 8c09302..7d58b42 100644 --- a/clang/include/clang/AST/ASTContext.h +++ b/clang/include/clang/AST/ASTContext.h @@ -57,7 +57,6 @@ #include "llvm/ADT/TinyPtrVector.h" #include "llvm/ADT/Triple.h" #include "llvm/ADT/iterator_range.h" -#include "llvm/Support/AlignOf.h" #include "llvm/Support/Allocator.h" #include "llvm/Support/Casting.h" #include "llvm/Support/Compiler.h" diff --git a/clang/include/clang/AST/ASTTypeTraits.h b/clang/include/clang/AST/ASTTypeTraits.h index 8791e41b..ea3da8d 100644 --- a/clang/include/clang/AST/ASTTypeTraits.h +++ b/clang/include/clang/AST/ASTTypeTraits.h @@ -22,7 +22,7 @@ #include "clang/AST/TypeLoc.h" #include "clang/Basic/LLVM.h" #include "llvm/ADT/DenseMapInfo.h" -#include "llvm/Support/AlignOf.h" +#include <type_traits> namespace llvm { @@ -456,9 +456,8 @@ private: /// \c QualTypes, \c NestedNameSpecifierLocs, \c TypeLocs, /// \c TemplateArguments and \c TemplateArgumentLocs on the other hand do not /// have storage or unique pointers and thus need to be stored by value. - llvm::AlignedCharArrayUnion<const void *, TemplateArgument, - TemplateArgumentLoc, NestedNameSpecifierLoc, - QualType, TypeLoc> + std::aligned_union_t<1, const void *, TemplateArgument, TemplateArgumentLoc, + NestedNameSpecifierLoc, QualType, TypeLoc> Storage; }; diff --git a/clang/include/clang/AST/ParentMapContext.h b/clang/include/clang/AST/ParentMapContext.h index a041238..a157906 100644 --- a/clang/include/clang/AST/ParentMapContext.h +++ b/clang/include/clang/AST/ParentMapContext.h @@ -89,7 +89,7 @@ public: /// Container for either a single DynTypedNode or for an ArrayRef to /// DynTypedNode. For use with ParentMap. class DynTypedNodeList { - llvm::AlignedCharArrayUnion<DynTypedNode, ArrayRef<DynTypedNode>> Storage; + std::aligned_union_t<1, DynTypedNode, ArrayRef<DynTypedNode>> Storage; bool IsSingleNode; public: diff --git a/clang/include/clang/Frontend/PrecompiledPreamble.h b/clang/include/clang/Frontend/PrecompiledPreamble.h index cea39bf..1f76831 100644 --- a/clang/include/clang/Frontend/PrecompiledPreamble.h +++ b/clang/include/clang/Frontend/PrecompiledPreamble.h @@ -17,7 +17,6 @@ #include "clang/Lex/Preprocessor.h" #include "llvm/ADT/IntrusiveRefCntPtr.h" #include "llvm/ADT/StringRef.h" -#include "llvm/Support/AlignOf.h" #include "llvm/Support/MD5.h" #include <cstddef> #include <memory> @@ -198,7 +197,7 @@ private: private: Kind StorageKind = Kind::Empty; - llvm::AlignedCharArrayUnion<TempPCHFile, InMemoryPreamble> Storage = {}; + std::aligned_union_t<1, TempPCHFile, InMemoryPreamble> Storage = {}; }; /// Data used to determine if a file used in the preamble has been changed. diff --git a/clang/include/clang/Sema/Overload.h b/clang/include/clang/Sema/Overload.h index 5be6a61..3c87dfc 100644 --- a/clang/include/clang/Sema/Overload.h +++ b/clang/include/clang/Sema/Overload.h @@ -31,7 +31,6 @@ #include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/StringRef.h" -#include "llvm/Support/AlignOf.h" #include "llvm/Support/Allocator.h" #include "llvm/Support/Casting.h" #include "llvm/Support/ErrorHandling.h" diff --git a/clang/lib/DirectoryWatcher/linux/DirectoryWatcher-linux.cpp b/clang/lib/DirectoryWatcher/linux/DirectoryWatcher-linux.cpp index 176d6d6..401a0eb 100644 --- a/clang/lib/DirectoryWatcher/linux/DirectoryWatcher-linux.cpp +++ b/clang/lib/DirectoryWatcher/linux/DirectoryWatcher-linux.cpp @@ -11,7 +11,6 @@ #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/ScopeExit.h" -#include "llvm/Support/AlignOf.h" #include "llvm/Support/Errno.h" #include "llvm/Support/Error.h" #include "llvm/Support/Path.h" diff --git a/clang/lib/DirectoryWatcher/windows/DirectoryWatcher-windows.cpp b/clang/lib/DirectoryWatcher/windows/DirectoryWatcher-windows.cpp index 25cbcf5..ba96289 100644 --- a/clang/lib/DirectoryWatcher/windows/DirectoryWatcher-windows.cpp +++ b/clang/lib/DirectoryWatcher/windows/DirectoryWatcher-windows.cpp @@ -14,7 +14,6 @@ #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/ScopeExit.h" -#include "llvm/Support/AlignOf.h" #include "llvm/Support/Errno.h" #include "llvm/Support/Mutex.h" #include "llvm/Support/Path.h" diff --git a/clang/lib/Lex/PPDirectives.cpp b/clang/lib/Lex/PPDirectives.cpp index d6b03d8..0280afd 100644 --- a/clang/lib/Lex/PPDirectives.cpp +++ b/clang/lib/Lex/PPDirectives.cpp @@ -39,7 +39,6 @@ #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/ADT/StringRef.h" -#include "llvm/Support/AlignOf.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/Path.h" #include <algorithm> diff --git a/llvm/include/llvm/ADT/DenseMap.h b/llvm/include/llvm/ADT/DenseMap.h index c9bf762..f591ee0 100644 --- a/llvm/include/llvm/ADT/DenseMap.h +++ b/llvm/include/llvm/ADT/DenseMap.h @@ -15,7 +15,6 @@ #include "llvm/ADT/DenseMapInfo.h" #include "llvm/ADT/EpochTracker.h" -#include "llvm/Support/AlignOf.h" #include "llvm/Support/Compiler.h" #include "llvm/Support/MathExtras.h" #include "llvm/Support/MemAlloc.h" @@ -901,7 +900,7 @@ class SmallDenseMap /// A "union" of an inline bucket array and the struct representing /// a large bucket. This union will be discriminated by the 'Small' bit. - AlignedCharArrayUnion<BucketT[InlineBuckets], LargeRep> storage; + std::aligned_union_t<1, BucketT[InlineBuckets], LargeRep> storage; public: explicit SmallDenseMap(unsigned NumInitBuckets = 0) { @@ -1041,7 +1040,7 @@ public: if (Small) { // First move the inline buckets into a temporary storage. - AlignedCharArrayUnion<BucketT[InlineBuckets]> TmpStorage; + std::aligned_union_t<1, BucketT[InlineBuckets]> TmpStorage; BucketT *TmpBegin = reinterpret_cast<BucketT *>(&TmpStorage); BucketT *TmpEnd = TmpBegin; diff --git a/llvm/include/llvm/ADT/IntervalMap.h b/llvm/include/llvm/ADT/IntervalMap.h index 0b6c7d6..7c571db 100644 --- a/llvm/include/llvm/ADT/IntervalMap.h +++ b/llvm/include/llvm/ADT/IntervalMap.h @@ -101,7 +101,6 @@ #include "llvm/ADT/PointerIntPair.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/bit.h" -#include "llvm/Support/AlignOf.h" #include "llvm/Support/Allocator.h" #include "llvm/Support/RecyclingAllocator.h" #include <algorithm> @@ -109,6 +108,7 @@ #include <cstdint> #include <iterator> #include <new> +#include <type_traits> #include <utility> namespace llvm { @@ -963,7 +963,7 @@ public: private: // The root data is either a RootLeaf or a RootBranchData instance. - AlignedCharArrayUnion<RootLeaf, RootBranchData> data; + std::aligned_union_t<1, RootLeaf, RootBranchData> data; // Tree height. // 0: Leaves in root. diff --git a/llvm/include/llvm/CodeGen/DIE.h b/llvm/include/llvm/CodeGen/DIE.h index 1667cf8..13a11a77 100644 --- a/llvm/include/llvm/CodeGen/DIE.h +++ b/llvm/include/llvm/CodeGen/DIE.h @@ -22,7 +22,6 @@ #include "llvm/ADT/iterator_range.h" #include "llvm/BinaryFormat/Dwarf.h" #include "llvm/CodeGen/DwarfStringPoolEntry.h" -#include "llvm/Support/AlignOf.h" #include "llvm/Support/Allocator.h" #include <cassert> #include <cstddef> @@ -368,9 +367,9 @@ private: /// /// All values that aren't standard layout (or are larger than 8 bytes) /// should be stored by reference instead of by value. - using ValTy = AlignedCharArrayUnion<DIEInteger, DIEString, DIEExpr, DIELabel, - DIEDelta *, DIEEntry, DIEBlock *, - DIELoc *, DIELocList, DIEBaseTypeRef *>; + using ValTy = std::aligned_union_t<1, DIEInteger, DIEString, DIEExpr, + DIELabel, DIEDelta *, DIEEntry, DIEBlock *, + DIELoc *, DIELocList, DIEBaseTypeRef *>; static_assert(sizeof(ValTy) <= sizeof(uint64_t) || sizeof(ValTy) <= sizeof(void *), diff --git a/llvm/include/llvm/CodeGen/SelectionDAGNodes.h b/llvm/include/llvm/CodeGen/SelectionDAGNodes.h index 7da8193..1e71d11 100644 --- a/llvm/include/llvm/CodeGen/SelectionDAGNodes.h +++ b/llvm/include/llvm/CodeGen/SelectionDAGNodes.h @@ -38,7 +38,6 @@ #include "llvm/IR/Instructions.h" #include "llvm/IR/Metadata.h" #include "llvm/IR/Operator.h" -#include "llvm/Support/AlignOf.h" #include "llvm/Support/AtomicOrdering.h" #include "llvm/Support/Casting.h" #include "llvm/Support/ErrorHandling.h" @@ -2628,10 +2627,9 @@ template <> struct GraphTraits<SDNode*> { /// /// This needs to be a union because the largest node differs on 32 bit systems /// with 4 and 8 byte pointer alignment, respectively. -using LargestSDNode = AlignedCharArrayUnion<AtomicSDNode, TargetIndexSDNode, - BlockAddressSDNode, - GlobalAddressSDNode, - PseudoProbeSDNode>; +using LargestSDNode = + std::aligned_union_t<1, AtomicSDNode, TargetIndexSDNode, BlockAddressSDNode, + GlobalAddressSDNode, PseudoProbeSDNode>; /// The SDNode class with the greatest alignment requirement. using MostAlignedSDNode = GlobalAddressSDNode; diff --git a/llvm/include/llvm/Support/Error.h b/llvm/include/llvm/Support/Error.h index c0f7c10..53d65e1 100644 --- a/llvm/include/llvm/Support/Error.h +++ b/llvm/include/llvm/Support/Error.h @@ -19,7 +19,6 @@ #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/Twine.h" #include "llvm/Config/abi-breaking.h" -#include "llvm/Support/AlignOf.h" #include "llvm/Support/Compiler.h" #include "llvm/Support/Debug.h" #include "llvm/Support/ErrorHandling.h" @@ -678,8 +677,8 @@ private: } union { - AlignedCharArrayUnion<storage_type> TStorage; - AlignedCharArrayUnion<error_type> ErrorStorage; + std::aligned_union_t<1, storage_type> TStorage; + std::aligned_union_t<1, error_type> ErrorStorage; }; bool HasError : 1; #if LLVM_ENABLE_ABI_BREAKING_CHECKS diff --git a/llvm/include/llvm/Support/ErrorOr.h b/llvm/include/llvm/Support/ErrorOr.h index b654c9c..d97b549 100644 --- a/llvm/include/llvm/Support/ErrorOr.h +++ b/llvm/include/llvm/Support/ErrorOr.h @@ -15,7 +15,6 @@ #ifndef LLVM_SUPPORT_ERROROR_H #define LLVM_SUPPORT_ERROROR_H -#include "llvm/Support/AlignOf.h" #include <cassert> #include <system_error> #include <type_traits> @@ -253,8 +252,8 @@ private: } union { - AlignedCharArrayUnion<storage_type> TStorage; - AlignedCharArrayUnion<std::error_code> ErrorStorage; + std::aligned_union_t<1, storage_type> TStorage; + std::aligned_union_t<1, std::error_code> ErrorStorage; }; bool HasError : 1; }; diff --git a/llvm/include/llvm/Support/JSON.h b/llvm/include/llvm/Support/JSON.h index c753cee..13af970 100644 --- a/llvm/include/llvm/Support/JSON.h +++ b/llvm/include/llvm/Support/JSON.h @@ -479,8 +479,8 @@ private: }; // All members mutable, see moveFrom(). mutable ValueType Type; - mutable llvm::AlignedCharArrayUnion<bool, double, int64_t, llvm::StringRef, - std::string, json::Array, json::Object> + mutable std::aligned_union_t<1, bool, double, int64_t, llvm::StringRef, + std::string, json::Array, json::Object> Union; friend bool operator==(const Value &, const Value &); }; diff --git a/llvm/include/llvm/Support/TrailingObjects.h b/llvm/include/llvm/Support/TrailingObjects.h index 0d9c450..54111fb 100644 --- a/llvm/include/llvm/Support/TrailingObjects.h +++ b/llvm/include/llvm/Support/TrailingObjects.h @@ -46,7 +46,6 @@ #ifndef LLVM_SUPPORT_TRAILINGOBJECTS_H #define LLVM_SUPPORT_TRAILINGOBJECTS_H -#include "llvm/Support/AlignOf.h" #include "llvm/Support/Alignment.h" #include "llvm/Support/Compiler.h" #include "llvm/Support/MathExtras.h" diff --git a/llvm/include/llvm/Support/YAMLTraits.h b/llvm/include/llvm/Support/YAMLTraits.h index a6ee48e..40a9c0b 100644 --- a/llvm/include/llvm/Support/YAMLTraits.h +++ b/llvm/include/llvm/Support/YAMLTraits.h @@ -15,7 +15,6 @@ #include "llvm/ADT/StringMap.h" #include "llvm/ADT/StringRef.h" #include "llvm/ADT/Twine.h" -#include "llvm/Support/AlignOf.h" #include "llvm/Support/Allocator.h" #include "llvm/Support/Endian.h" #include "llvm/Support/Regex.h" @@ -1311,7 +1310,7 @@ struct MappingNormalization { TNorm* operator->() { return BufPtr; } private: - using Storage = AlignedCharArrayUnion<TNorm>; + using Storage = std::aligned_union_t<1, TNorm>; Storage Buffer; IO &io; @@ -1348,7 +1347,7 @@ struct MappingNormalizationHeap { TNorm* operator->() { return BufPtr; } private: - using Storage = AlignedCharArrayUnion<TNorm>; + using Storage = std::aligned_union_t<1, TNorm>; Storage Buffer; IO &io; diff --git a/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp b/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp index 74ba23d..4e560a7 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp @@ -26,7 +26,6 @@ #include "llvm/IR/PatternMatch.h" #include "llvm/IR/Type.h" #include "llvm/IR/Value.h" -#include "llvm/Support/AlignOf.h" #include "llvm/Support/Casting.h" #include "llvm/Support/KnownBits.h" #include "llvm/Transforms/InstCombine/InstCombiner.h" @@ -120,7 +119,7 @@ namespace { // is overkill of this end. short IntVal = 0; - AlignedCharArrayUnion<APFloat> FpValBuf; + std::aligned_union_t<1, APFloat> FpValBuf; }; /// FAddend is used to represent floating-point addend. An addend is |