Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions llvm/include/llvm/DebugInfo/BTF/BTF.h
Original file line number Diff line number Diff line change
Expand Up @@ -304,14 +304,12 @@ enum PatchableRelocKind : uint32_t {
// For CommonType sub-types that are followed by a single entry of
// some type in the binary format.
#define BTF_DEFINE_TAIL(Type, Accessor) \
const Type &Accessor() const { return *getTrailingObjects<Type>(); }
const Type &Accessor() const { return *getTrailingObjects(); }

// For CommonType sub-types that are followed by CommonType::getVlen()
// number of entries of some type in the binary format.
#define BTF_DEFINE_TAIL_ARR(Type, Accessor) \
ArrayRef<Type> Accessor() const { \
return ArrayRef<Type>(getTrailingObjects<Type>(), getVlen()); \
}
ArrayRef<Type> Accessor() const { return getTrailingObjects(getVlen()); }

struct ArrayType final : CommonType,
private TrailingObjects<ArrayType, BTFArray> {
Expand Down
12 changes: 5 additions & 7 deletions llvm/include/llvm/IR/DataLayout.h
Original file line number Diff line number Diff line change
Expand Up @@ -564,7 +564,9 @@ inline LLVMTargetDataRef wrap(const DataLayout *P) {

/// Used to lazily calculate structure layout information for a target machine,
/// based on the DataLayout structure.
class StructLayout final : public TrailingObjects<StructLayout, TypeSize> {
class StructLayout final : private TrailingObjects<StructLayout, TypeSize> {
friend TrailingObjects;

TypeSize StructSize;
Align StructAlignment;
unsigned IsPadded : 1;
Expand All @@ -586,11 +588,11 @@ class StructLayout final : public TrailingObjects<StructLayout, TypeSize> {
unsigned getElementContainingOffset(uint64_t FixedOffset) const;

MutableArrayRef<TypeSize> getMemberOffsets() {
return llvm::MutableArrayRef(getTrailingObjects<TypeSize>(), NumElements);
return getTrailingObjects(NumElements);
}

ArrayRef<TypeSize> getMemberOffsets() const {
return llvm::ArrayRef(getTrailingObjects<TypeSize>(), NumElements);
return getTrailingObjects(NumElements);
}

TypeSize getElementOffset(unsigned Idx) const {
Expand All @@ -606,10 +608,6 @@ class StructLayout final : public TrailingObjects<StructLayout, TypeSize> {
friend class DataLayout; // Only DataLayout can create this class

StructLayout(StructType *ST, const DataLayout &DL);

size_t numTrailingObjects(OverloadToken<TypeSize>) const {
return NumElements;
}
};

// The implementation of this method is provided inline as it is particularly
Expand Down
22 changes: 8 additions & 14 deletions llvm/include/llvm/TableGen/Record.h
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ class RecordRecTy final : public RecTy,
void Profile(FoldingSetNodeID &ID) const;

ArrayRef<const Record *> getClasses() const {
return ArrayRef(getTrailingObjects<const Record *>(), NumClasses);
return getTrailingObjects(NumClasses);
}

using const_record_iterator = const Record *const *;
Expand Down Expand Up @@ -632,9 +632,7 @@ class BitsInit final : public TypedInit,

const Init *resolveReferences(Resolver &R) const override;

ArrayRef<const Init *> getBits() const {
return ArrayRef(getTrailingObjects<const Init *>(), NumBits);
}
ArrayRef<const Init *> getBits() const { return getTrailingObjects(NumBits); }

const Init *getBit(unsigned Bit) const override { return getBits()[Bit]; }
};
Expand Down Expand Up @@ -783,7 +781,7 @@ class ListInit final : public TypedInit,
void Profile(FoldingSetNodeID &ID) const;

ArrayRef<const Init *> getValues() const {
return ArrayRef(getTrailingObjects<const Init *>(), NumValues);
return ArrayRef(getTrailingObjects(), NumValues);
}

const Init *getElement(unsigned Index) const { return getValues()[Index]; }
Expand Down Expand Up @@ -1026,10 +1024,6 @@ class CondOpInit final : public TypedInit,
CondOpInit(ArrayRef<const Init *> Conds, ArrayRef<const Init *> Values,
const RecTy *Type);

size_t numTrailingObjects(OverloadToken<Init *>) const {
return 2*NumConds;
}

public:
CondOpInit(const CondOpInit &) = delete;
CondOpInit &operator=(const CondOpInit &) = delete;
Expand All @@ -1053,11 +1047,11 @@ class CondOpInit final : public TypedInit,
const Init *getVal(unsigned Num) const { return getVals()[Num]; }

ArrayRef<const Init *> getConds() const {
return ArrayRef(getTrailingObjects<const Init *>(), NumConds);
return getTrailingObjects(NumConds);
}

ArrayRef<const Init *> getVals() const {
return ArrayRef(getTrailingObjects<const Init *>() + NumConds, NumConds);
return ArrayRef(getTrailingObjects() + NumConds, NumConds);
}

const Init *Fold(const Record *CurRec) const;
Expand Down Expand Up @@ -1375,7 +1369,7 @@ class VarDefInit final
bool args_empty() const { return NumArgs == 0; }

ArrayRef<const ArgumentInit *> args() const {
return ArrayRef(getTrailingObjects<const ArgumentInit *>(), NumArgs);
return getTrailingObjects(NumArgs);
}

const Init *getBit(unsigned Bit) const override {
Expand Down Expand Up @@ -1488,11 +1482,11 @@ class DagInit final
}

ArrayRef<const Init *> getArgs() const {
return ArrayRef(getTrailingObjects<const Init *>(), NumArgs);
return getTrailingObjects<const Init *>(NumArgs);
}

ArrayRef<const StringInit *> getArgNames() const {
return ArrayRef(getTrailingObjects<const StringInit *>(), NumArgs);
return getTrailingObjects<const StringInit *>(NumArgs);
}

const Init *resolveReferences(Resolver &R) const override;
Expand Down
4 changes: 2 additions & 2 deletions llvm/lib/Bitcode/Reader/BitcodeReader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -542,7 +542,7 @@ class BitcodeConstant final : public Value,
: Value(Ty, SubclassID), Opcode(Info.Opcode), Flags(Info.Flags),
NumOperands(OpIDs.size()), BlockAddressBB(Info.BlockAddressBB),
SrcElemTy(Info.SrcElemTy), InRange(Info.InRange) {
llvm::uninitialized_copy(OpIDs, getTrailingObjects<unsigned>());
llvm::uninitialized_copy(OpIDs, getTrailingObjects());
}

BitcodeConstant &operator=(const BitcodeConstant &) = delete;
Expand All @@ -559,7 +559,7 @@ class BitcodeConstant final : public Value,
static bool classof(const Value *V) { return V->getValueID() == SubclassID; }

ArrayRef<unsigned> getOperandIDs() const {
return ArrayRef(getTrailingObjects<unsigned>(), NumOperands);
return ArrayRef(getTrailingObjects(), NumOperands);
}

std::optional<ConstantRange> getInRange() const {
Expand Down
27 changes: 9 additions & 18 deletions llvm/lib/IR/AttributeImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -195,15 +195,12 @@ class StringAttributeImpl final

unsigned KindSize;
unsigned ValSize;
size_t numTrailingObjects(OverloadToken<char>) const {
return KindSize + 1 + ValSize + 1;
}

public:
StringAttributeImpl(StringRef Kind, StringRef Val = StringRef())
: AttributeImpl(StringAttrEntry), KindSize(Kind.size()),
ValSize(Val.size()) {
char *TrailingString = getTrailingObjects<char>();
char *TrailingString = getTrailingObjects();
// Some users rely on zero-termination.
llvm::copy(Kind, TrailingString);
TrailingString[KindSize] = '\0';
Expand All @@ -212,10 +209,10 @@ class StringAttributeImpl final
}

StringRef getStringKind() const {
return StringRef(getTrailingObjects<char>(), KindSize);
return StringRef(getTrailingObjects(), KindSize);
}
StringRef getStringValue() const {
return StringRef(getTrailingObjects<char>() + KindSize + 1, ValSize);
return StringRef(getTrailingObjects() + KindSize + 1, ValSize);
}

static size_t totalSizeToAlloc(StringRef Kind, StringRef Val) {
Expand Down Expand Up @@ -250,25 +247,22 @@ class ConstantRangeListAttributeImpl final
friend TrailingObjects;

unsigned Size;
size_t numTrailingObjects(OverloadToken<ConstantRange>) const { return Size; }

public:
ConstantRangeListAttributeImpl(Attribute::AttrKind Kind,
ArrayRef<ConstantRange> Val)
: EnumAttributeImpl(ConstantRangeListAttrEntry, Kind), Size(Val.size()) {
assert(Size > 0);
ConstantRange *TrailingCR = getTrailingObjects<ConstantRange>();
llvm::uninitialized_copy(Val, TrailingCR);
llvm::uninitialized_copy(Val, getTrailingObjects());
}

~ConstantRangeListAttributeImpl() {
ConstantRange *TrailingCR = getTrailingObjects<ConstantRange>();
for (unsigned I = 0; I != Size; ++I)
TrailingCR[I].~ConstantRange();
for (ConstantRange &CR : getTrailingObjects(Size))
CR.~ConstantRange();
}

ArrayRef<ConstantRange> getConstantRangeListValue() const {
return ArrayRef(getTrailingObjects<ConstantRange>(), Size);
return getTrailingObjects(Size);
}

static size_t totalSizeToAlloc(ArrayRef<ConstantRange> Val) {
Expand Down Expand Up @@ -353,7 +347,7 @@ class AttributeSetNode final

using iterator = const Attribute *;

iterator begin() const { return getTrailingObjects<Attribute>(); }
iterator begin() const { return getTrailingObjects(); }
iterator end() const { return begin() + NumAttrs; }

void Profile(FoldingSetNodeID &ID) const {
Expand Down Expand Up @@ -383,9 +377,6 @@ class AttributeListImpl final
/// Union of enum attributes available at any index.
AttributeBitSet AvailableSomewhereAttrs;

// Helper fn for TrailingObjects class.
size_t numTrailingObjects(OverloadToken<AttributeSet>) { return NumAttrSets; }

public:
AttributeListImpl(ArrayRef<AttributeSet> Sets);

Expand All @@ -407,7 +398,7 @@ class AttributeListImpl final

using iterator = const AttributeSet *;

iterator begin() const { return getTrailingObjects<AttributeSet>(); }
iterator begin() const { return getTrailingObjects(); }
iterator end() const { return begin() + NumAttrSets; }

void Profile(FoldingSetNodeID &ID) const;
Expand Down
4 changes: 2 additions & 2 deletions llvm/lib/IR/Attributes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1237,7 +1237,7 @@ LLVM_DUMP_METHOD void AttributeSet::dump() const {
AttributeSetNode::AttributeSetNode(ArrayRef<Attribute> Attrs)
: NumAttrs(Attrs.size()) {
// There's memory after the node where we can store the entries in.
llvm::copy(Attrs, getTrailingObjects<Attribute>());
llvm::copy(Attrs, getTrailingObjects());

for (const auto &I : *this) {
if (I.isStringAttribute())
Expand Down Expand Up @@ -1423,7 +1423,7 @@ AttributeListImpl::AttributeListImpl(ArrayRef<AttributeSet> Sets)
assert(!Sets.empty() && "pointless AttributeListImpl");

// There's memory after the node where we can store the entries in.
llvm::copy(Sets, getTrailingObjects<AttributeSet>());
llvm::copy(Sets, getTrailingObjects());

// Initialize AvailableFunctionAttrs and AvailableSomewhereAttrs
// summary bitsets.
Expand Down
4 changes: 2 additions & 2 deletions llvm/lib/Support/TrieRawHashMap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class TrieSubtrie final
public:
using Slot = LazyAtomicPointer<TrieNode>;

Slot &get(size_t I) { return getTrailingObjects<Slot>()[I]; }
Slot &get(size_t I) { return getTrailingObjects()[I]; }
TrieNode *load(size_t I) { return get(I).load(); }

unsigned size() const { return Size; }
Expand Down Expand Up @@ -190,7 +190,7 @@ class ThreadSafeTrieRawHashMapBase::ImplType final
}

// Get the root which is the trailing object.
TrieSubtrie *getRoot() { return getTrailingObjects<TrieSubtrie>(); }
TrieSubtrie *getRoot() { return getTrailingObjects(); }

static void *operator new(size_t Size) { return ::operator new(Size); }
void operator delete(void *Ptr) { ::operator delete(Ptr); }
Expand Down
12 changes: 6 additions & 6 deletions llvm/lib/TableGen/Record.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ static void ProfileRecordRecTy(FoldingSetNodeID &ID,

RecordRecTy::RecordRecTy(RecordKeeper &RK, ArrayRef<const Record *> Classes)
: RecTy(RecordRecTyKind, RK), NumClasses(Classes.size()) {
llvm::uninitialized_copy(Classes, getTrailingObjects<const Record *>());
llvm::uninitialized_copy(Classes, getTrailingObjects());
}

const RecordRecTy *RecordRecTy::get(RecordKeeper &RK,
Expand Down Expand Up @@ -473,7 +473,7 @@ static void ProfileBitsInit(FoldingSetNodeID &ID,
BitsInit::BitsInit(RecordKeeper &RK, ArrayRef<const Init *> Bits)
: TypedInit(IK_BitsInit, BitsRecTy::get(RK, Bits.size())),
NumBits(Bits.size()) {
llvm::uninitialized_copy(Bits, getTrailingObjects<const Init *>());
llvm::uninitialized_copy(Bits, getTrailingObjects());
}

BitsInit *BitsInit::get(RecordKeeper &RK, ArrayRef<const Init *> Bits) {
Expand All @@ -493,7 +493,7 @@ BitsInit *BitsInit::get(RecordKeeper &RK, ArrayRef<const Init *> Bits) {
}

void BitsInit::Profile(FoldingSetNodeID &ID) const {
ProfileBitsInit(ID, ArrayRef(getTrailingObjects<const Init *>(), NumBits));
ProfileBitsInit(ID, getBits());
}

const Init *BitsInit::convertInitializerTo(const RecTy *Ty) const {
Expand Down Expand Up @@ -706,7 +706,7 @@ static void ProfileListInit(FoldingSetNodeID &ID, ArrayRef<const Init *> Range,
ListInit::ListInit(ArrayRef<const Init *> Elements, const RecTy *EltTy)
: TypedInit(IK_ListInit, ListRecTy::get(EltTy)),
NumValues(Elements.size()) {
llvm::uninitialized_copy(Elements, getTrailingObjects<const Init *>());
llvm::uninitialized_copy(Elements, getTrailingObjects());
}

const ListInit *ListInit::get(ArrayRef<const Init *> Elements,
Expand Down Expand Up @@ -2432,7 +2432,7 @@ VarDefInit::VarDefInit(SMLoc Loc, const Record *Class,
ArrayRef<const ArgumentInit *> Args)
: TypedInit(IK_VarDefInit, RecordRecTy::get(Class)), Loc(Loc), Class(Class),
NumArgs(Args.size()) {
llvm::uninitialized_copy(Args, getTrailingObjects<const ArgumentInit *>());
llvm::uninitialized_copy(Args, getTrailingObjects());
}

const VarDefInit *VarDefInit::get(SMLoc Loc, const Record *Class,
Expand Down Expand Up @@ -2616,7 +2616,7 @@ static void ProfileCondOpInit(FoldingSetNodeID &ID,
CondOpInit::CondOpInit(ArrayRef<const Init *> Conds,
ArrayRef<const Init *> Values, const RecTy *Type)
: TypedInit(IK_CondOpInit, Type), NumConds(Conds.size()), ValType(Type) {
auto *TrailingObjects = getTrailingObjects<const Init *>();
const Init **TrailingObjects = getTrailingObjects();
llvm::uninitialized_copy(Conds, TrailingObjects);
llvm::uninitialized_copy(Values, TrailingObjects + NumConds);
}
Expand Down
12 changes: 4 additions & 8 deletions llvm/lib/Transforms/IPO/LowerTypeTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -285,8 +285,6 @@ class GlobalTypeMember final : TrailingObjects<GlobalTypeMember, MDNode *> {
// module and its jumptable entry needs to be exported to thinlto backends.
bool IsExported;

size_t numTrailingObjects(OverloadToken<MDNode *>) const { return NTypes; }

public:
static GlobalTypeMember *create(BumpPtrAllocator &Alloc, GlobalObject *GO,
bool IsJumpTableCanonical, bool IsExported,
Expand All @@ -297,7 +295,7 @@ class GlobalTypeMember final : TrailingObjects<GlobalTypeMember, MDNode *> {
GTM->NTypes = Types.size();
GTM->IsJumpTableCanonical = IsJumpTableCanonical;
GTM->IsExported = IsExported;
llvm::copy(Types, GTM->getTrailingObjects<MDNode *>());
llvm::copy(Types, GTM->getTrailingObjects());
return GTM;
}

Expand All @@ -313,9 +311,7 @@ class GlobalTypeMember final : TrailingObjects<GlobalTypeMember, MDNode *> {
return IsExported;
}

ArrayRef<MDNode *> types() const {
return ArrayRef(getTrailingObjects<MDNode *>(), NTypes);
}
ArrayRef<MDNode *> types() const { return getTrailingObjects(NTypes); }
};

struct ICallBranchFunnel final
Expand All @@ -329,13 +325,13 @@ struct ICallBranchFunnel final
Call->CI = CI;
Call->UniqueId = UniqueId;
Call->NTargets = Targets.size();
llvm::copy(Targets, Call->getTrailingObjects<GlobalTypeMember *>());
llvm::copy(Targets, Call->getTrailingObjects());
return Call;
}

CallInst *CI;
ArrayRef<GlobalTypeMember *> targets() const {
return ArrayRef(getTrailingObjects<GlobalTypeMember *>(), NTargets);
return getTrailingObjects(NTargets);
}

unsigned UniqueId;
Expand Down
5 changes: 2 additions & 3 deletions mlir/include/mlir/IR/Operation.h
Original file line number Diff line number Diff line change
Expand Up @@ -679,8 +679,7 @@ class alignas(8) Operation final
if (numRegions == 0)
return MutableArrayRef<Region>();

auto *regions = getTrailingObjects<Region>();
return {regions, numRegions};
return getTrailingObjects<Region>(numRegions);
}

/// Returns the region held by this operation at position 'index'.
Expand All @@ -694,7 +693,7 @@ class alignas(8) Operation final
//===--------------------------------------------------------------------===//

MutableArrayRef<BlockOperand> getBlockOperands() {
return {getTrailingObjects<BlockOperand>(), numSuccs};
return getTrailingObjects<BlockOperand>(numSuccs);
}

// Successor iteration.
Expand Down
Loading