forked from OSchip/llvm-project
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
This commit is contained in:
parent
fa4c3f70ff
commit
d10f9863a5
|
@ -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;
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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 *),
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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 &);
|
||||
};
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue