mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
Remove the explicit SDNodeIterator::operator= in favor of the implicit default
There doesn't seem to be any need to assert that iterator assignment is between iterators over the same node - if you want to reuse an iterator variable to iterate another node, that's perfectly acceptable. Just don't mix comparisons between iterators into disjoint sequences, as usual. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231135 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
113c43b2c6
commit
b13215ec3b
@ -104,6 +104,12 @@ class CallGraph {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
CallGraph(Module &M);
|
CallGraph(Module &M);
|
||||||
|
// Copyable for syntax's sake, but rely on RVO such that this is never called.
|
||||||
|
// Should really make this type legitimately movable instead, possibly my
|
||||||
|
// making FunctionMap values and the CallsExternalCode member unique_ptrs,
|
||||||
|
// then adding some internal helper objects that can call
|
||||||
|
// "allReferencesDropped" on those elements before their final destruction.
|
||||||
|
CallGraph(const CallGraph&);
|
||||||
~CallGraph();
|
~CallGraph();
|
||||||
|
|
||||||
void print(raw_ostream &OS) const;
|
void print(raw_ostream &OS) const;
|
||||||
|
@ -104,6 +104,8 @@ public:
|
|||||||
llvm_unreachable("ProcessInterval should never fail for first interval!");
|
llvm_unreachable("ProcessInterval should never fail for first interval!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Declare but don't define, rely on RVO to optimize this away.
|
||||||
|
IntervalIterator(const IntervalIterator&);
|
||||||
|
|
||||||
IntervalIterator(IntervalPartition &IP, bool OwnMemory) : IOwnMem(OwnMemory) {
|
IntervalIterator(IntervalPartition &IP, bool OwnMemory) : IOwnMem(OwnMemory) {
|
||||||
OrigContainer = &IP;
|
OrigContainer = &IP;
|
||||||
|
@ -146,6 +146,8 @@ public:
|
|||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RNSuccIterator(const RNSuccIterator&) = default;
|
||||||
|
|
||||||
inline const Self &operator=(const Self &I) {
|
inline const Self &operator=(const Self &I) {
|
||||||
if (this != &I) {
|
if (this != &I) {
|
||||||
assert(getNode()->getParent() == I.getNode()->getParent()
|
assert(getNode()->getParent() == I.getNode()->getParent()
|
||||||
@ -241,6 +243,8 @@ public:
|
|||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RNSuccIterator(const RNSuccIterator&) = default;
|
||||||
|
|
||||||
inline const Self &operator=(const Self &I) {
|
inline const Self &operator=(const Self &I) {
|
||||||
if (this != &I) {
|
if (this != &I) {
|
||||||
assert(Node->getParent() == I.Node->getParent()
|
assert(Node->getParent() == I.Node->getParent()
|
||||||
|
@ -199,7 +199,7 @@ namespace llvm {
|
|||||||
// of live ranges of physical registers in computeRegUnitRange.
|
// of live ranges of physical registers in computeRegUnitRange.
|
||||||
// After that the set is flushed to the segment vector and deleted.
|
// After that the set is flushed to the segment vector and deleted.
|
||||||
typedef std::set<Segment> SegmentSet;
|
typedef std::set<Segment> SegmentSet;
|
||||||
SegmentSet *segmentSet;
|
std::unique_ptr<SegmentSet> segmentSet;
|
||||||
|
|
||||||
typedef Segments::iterator iterator;
|
typedef Segments::iterator iterator;
|
||||||
iterator begin() { return segments.begin(); }
|
iterator begin() { return segments.begin(); }
|
||||||
@ -218,15 +218,13 @@ namespace llvm {
|
|||||||
const_vni_iterator vni_end() const { return valnos.end(); }
|
const_vni_iterator vni_end() const { return valnos.end(); }
|
||||||
|
|
||||||
/// Constructs a new LiveRange object.
|
/// Constructs a new LiveRange object.
|
||||||
LiveRange(bool UseSegmentSet = false) : segmentSet(nullptr) {
|
LiveRange(bool UseSegmentSet = false)
|
||||||
if (UseSegmentSet)
|
: segmentSet(UseSegmentSet ? llvm::make_unique<SegmentSet>()
|
||||||
segmentSet = new SegmentSet();
|
: nullptr) {}
|
||||||
}
|
|
||||||
|
|
||||||
/// Constructs a new LiveRange object by copying segments and valnos from
|
/// Constructs a new LiveRange object by copying segments and valnos from
|
||||||
/// another LiveRange.
|
/// another LiveRange.
|
||||||
LiveRange(const LiveRange &Other, BumpPtrAllocator &Allocator)
|
LiveRange(const LiveRange &Other, BumpPtrAllocator &Allocator) {
|
||||||
: segmentSet(nullptr) {
|
|
||||||
assert(Other.segmentSet == nullptr &&
|
assert(Other.segmentSet == nullptr &&
|
||||||
"Copying of LiveRanges with active SegmentSets is not supported");
|
"Copying of LiveRanges with active SegmentSets is not supported");
|
||||||
|
|
||||||
@ -240,8 +238,6 @@ namespace llvm {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
~LiveRange() { delete segmentSet; }
|
|
||||||
|
|
||||||
/// advanceTo - Advance the specified iterator to point to the Segment
|
/// advanceTo - Advance the specified iterator to point to the Segment
|
||||||
/// containing the specified position, or end() if the position is past the
|
/// containing the specified position, or end() if the position is past the
|
||||||
/// end of the range. If no Segment contains this position, but the
|
/// end of the range. If no Segment contains this position, but the
|
||||||
@ -745,8 +741,6 @@ namespace llvm {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
LiveInterval& operator=(const LiveInterval& rhs) = delete;
|
|
||||||
|
|
||||||
/// Appends @p Range to SubRanges list.
|
/// Appends @p Range to SubRanges list.
|
||||||
void appendSubRange(SubRange *Range) {
|
void appendSubRange(SubRange *Range) {
|
||||||
Range->Next = SubRanges;
|
Range->Next = SubRanges;
|
||||||
|
@ -2063,12 +2063,6 @@ public:
|
|||||||
}
|
}
|
||||||
bool operator!=(const SDNodeIterator& x) const { return !operator==(x); }
|
bool operator!=(const SDNodeIterator& x) const { return !operator==(x); }
|
||||||
|
|
||||||
const SDNodeIterator &operator=(const SDNodeIterator &I) {
|
|
||||||
assert(I.Node == Node && "Cannot assign iterators to two different nodes!");
|
|
||||||
Operand = I.Operand;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
pointer operator*() const {
|
pointer operator*() const {
|
||||||
return Node->getOperand(Operand).getNode();
|
return Node->getOperand(Operand).getNode();
|
||||||
}
|
}
|
||||||
|
@ -132,11 +132,13 @@ private:
|
|||||||
/// \brief Proxy object to allow write access in operator[]
|
/// \brief Proxy object to allow write access in operator[]
|
||||||
class SuccessorProxy {
|
class SuccessorProxy {
|
||||||
Self it;
|
Self it;
|
||||||
|
friend class SuccIterator;
|
||||||
|
SuccessorProxy(const SuccessorProxy&) = default;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit SuccessorProxy(const Self &it) : it(it) {}
|
explicit SuccessorProxy(const Self &it) : it(it) {}
|
||||||
|
|
||||||
SuccessorProxy &operator=(SuccessorProxy r) {
|
SuccessorProxy &operator=(const SuccessorProxy &r) {
|
||||||
*this = reference(r);
|
*this = reference(r);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
@ -165,6 +167,8 @@ public:
|
|||||||
idx = 0;
|
idx = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SuccIterator(const SuccIterator&) = default;
|
||||||
|
|
||||||
inline const Self &operator=(const Self &I) {
|
inline const Self &operator=(const Self &I) {
|
||||||
assert(Term == I.Term &&"Cannot assign iterators to two different blocks!");
|
assert(Term == I.Term &&"Cannot assign iterators to two different blocks!");
|
||||||
idx = I.idx;
|
idx = I.idx;
|
||||||
|
@ -51,6 +51,7 @@ protected:
|
|||||||
Tracking,
|
Tracking,
|
||||||
Weak
|
Weak
|
||||||
};
|
};
|
||||||
|
ValueHandleBase(const ValueHandleBase&) = default;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
PointerIntPair<ValueHandleBase**, 2, HandleBaseKind> PrevPair;
|
PointerIntPair<ValueHandleBase**, 2, HandleBaseKind> PrevPair;
|
||||||
@ -58,7 +59,6 @@ private:
|
|||||||
|
|
||||||
Value* V;
|
Value* V;
|
||||||
|
|
||||||
ValueHandleBase(const ValueHandleBase&) = delete;
|
|
||||||
public:
|
public:
|
||||||
explicit ValueHandleBase(HandleBaseKind Kind)
|
explicit ValueHandleBase(HandleBaseKind Kind)
|
||||||
: PrevPair(nullptr, Kind), Next(nullptr), V(nullptr) {}
|
: PrevPair(nullptr, Kind), Next(nullptr), V(nullptr) {}
|
||||||
@ -144,6 +144,10 @@ public:
|
|||||||
WeakVH(Value *P) : ValueHandleBase(Weak, P) {}
|
WeakVH(Value *P) : ValueHandleBase(Weak, P) {}
|
||||||
WeakVH(const WeakVH &RHS)
|
WeakVH(const WeakVH &RHS)
|
||||||
: ValueHandleBase(Weak, RHS) {}
|
: ValueHandleBase(Weak, RHS) {}
|
||||||
|
// Questionable - these are stored in a vector in AssumptionCache (perhaps
|
||||||
|
// other copies too) and need to be copied. When copied, how would they
|
||||||
|
// properly insert into the use list?
|
||||||
|
WeakVH&operator=(const WeakVH &RHS) = default;
|
||||||
|
|
||||||
Value *operator=(Value *RHS) {
|
Value *operator=(Value *RHS) {
|
||||||
return ValueHandleBase::operator=(RHS);
|
return ValueHandleBase::operator=(RHS);
|
||||||
@ -345,7 +349,8 @@ protected:
|
|||||||
CallbackVH(const CallbackVH &RHS)
|
CallbackVH(const CallbackVH &RHS)
|
||||||
: ValueHandleBase(Callback, RHS) {}
|
: ValueHandleBase(Callback, RHS) {}
|
||||||
|
|
||||||
virtual ~CallbackVH() {}
|
virtual ~CallbackVH() = default;
|
||||||
|
CallbackVH &operator=(const CallbackVH &) = default;
|
||||||
|
|
||||||
void setValPtr(Value *P) {
|
void setValPtr(Value *P) {
|
||||||
ValueHandleBase::operator=(P);
|
ValueHandleBase::operator=(P);
|
||||||
|
@ -477,7 +477,7 @@ namespace llvm {
|
|||||||
/// allocator supports it).
|
/// allocator supports it).
|
||||||
/// @return The allocated memory. Could be NULL.
|
/// @return The allocated memory. Could be NULL.
|
||||||
inline void *operator new(size_t Bytes, llvm::MCContext &C,
|
inline void *operator new(size_t Bytes, llvm::MCContext &C,
|
||||||
size_t Alignment = 16) throw () {
|
size_t Alignment = 16) LLVM_NOEXCEPT {
|
||||||
return C.Allocate(Bytes, Alignment);
|
return C.Allocate(Bytes, Alignment);
|
||||||
}
|
}
|
||||||
/// @brief Placement delete companion to the new above.
|
/// @brief Placement delete companion to the new above.
|
||||||
@ -487,7 +487,7 @@ inline void *operator new(size_t Bytes, llvm::MCContext &C,
|
|||||||
/// is called implicitly by the compiler if a placement new expression using
|
/// is called implicitly by the compiler if a placement new expression using
|
||||||
/// the MCContext throws in the object constructor.
|
/// the MCContext throws in the object constructor.
|
||||||
inline void operator delete(void *Ptr, llvm::MCContext &C, size_t)
|
inline void operator delete(void *Ptr, llvm::MCContext &C, size_t)
|
||||||
throw () {
|
LLVM_NOEXCEPT {
|
||||||
C.Deallocate(Ptr);
|
C.Deallocate(Ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -511,7 +511,7 @@ inline void operator delete(void *Ptr, llvm::MCContext &C, size_t)
|
|||||||
/// allocator supports it).
|
/// allocator supports it).
|
||||||
/// @return The allocated memory. Could be NULL.
|
/// @return The allocated memory. Could be NULL.
|
||||||
inline void *operator new[](size_t Bytes, llvm::MCContext& C,
|
inline void *operator new[](size_t Bytes, llvm::MCContext& C,
|
||||||
size_t Alignment = 16) throw () {
|
size_t Alignment = 16) LLVM_NOEXCEPT {
|
||||||
return C.Allocate(Bytes, Alignment);
|
return C.Allocate(Bytes, Alignment);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -521,7 +521,7 @@ inline void *operator new[](size_t Bytes, llvm::MCContext& C,
|
|||||||
/// invoking it directly; see the new[] operator for more details. This operator
|
/// invoking it directly; see the new[] operator for more details. This operator
|
||||||
/// is called implicitly by the compiler if a placement new[] expression using
|
/// is called implicitly by the compiler if a placement new[] expression using
|
||||||
/// the MCContext throws in the object constructor.
|
/// the MCContext throws in the object constructor.
|
||||||
inline void operator delete[](void *Ptr, llvm::MCContext &C) throw () {
|
inline void operator delete[](void *Ptr, llvm::MCContext &C) LLVM_NOEXCEPT {
|
||||||
C.Deallocate(Ptr);
|
C.Deallocate(Ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -352,9 +352,13 @@ struct cat {
|
|||||||
|
|
||||||
// Support value comparison outside the template.
|
// Support value comparison outside the template.
|
||||||
struct GenericOptionValue {
|
struct GenericOptionValue {
|
||||||
virtual ~GenericOptionValue() {}
|
virtual ~GenericOptionValue() = default;
|
||||||
virtual bool compare(const GenericOptionValue &V) const = 0;
|
virtual bool compare(const GenericOptionValue &V) const = 0;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
GenericOptionValue() = default;
|
||||||
|
GenericOptionValue(const GenericOptionValue&) = default;
|
||||||
|
GenericOptionValue &operator=(const GenericOptionValue &) = default;
|
||||||
private:
|
private:
|
||||||
virtual void anchor();
|
virtual void anchor();
|
||||||
};
|
};
|
||||||
@ -386,6 +390,9 @@ struct OptionValueBase : public GenericOptionValue {
|
|||||||
template <class DataType> class OptionValueCopy : public GenericOptionValue {
|
template <class DataType> class OptionValueCopy : public GenericOptionValue {
|
||||||
DataType Value;
|
DataType Value;
|
||||||
bool Valid;
|
bool Valid;
|
||||||
|
protected:
|
||||||
|
OptionValueCopy(const OptionValueCopy&) = default;
|
||||||
|
OptionValueCopy &operator=(const OptionValueCopy&) = default;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
OptionValueCopy() : Valid(false) {}
|
OptionValueCopy() : Valid(false) {}
|
||||||
@ -417,6 +424,10 @@ public:
|
|||||||
template <class DataType>
|
template <class DataType>
|
||||||
struct OptionValueBase<DataType, false> : OptionValueCopy<DataType> {
|
struct OptionValueBase<DataType, false> : OptionValueCopy<DataType> {
|
||||||
typedef DataType WrapperType;
|
typedef DataType WrapperType;
|
||||||
|
protected:
|
||||||
|
OptionValueBase() = default;
|
||||||
|
OptionValueBase(const OptionValueBase&) = default;
|
||||||
|
OptionValueBase &operator=(const OptionValueBase&) = default;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Top-level option class.
|
// Top-level option class.
|
||||||
@ -721,6 +732,8 @@ public:
|
|||||||
virtual void anchor();
|
virtual void anchor();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
basic_parser_impl(const basic_parser_impl&) = default;
|
||||||
|
|
||||||
// A helper for basic_parser::printOptionDiff.
|
// A helper for basic_parser::printOptionDiff.
|
||||||
void printOptionName(const Option &O, size_t GlobalWidth) const;
|
void printOptionName(const Option &O, size_t GlobalWidth) const;
|
||||||
};
|
};
|
||||||
@ -729,6 +742,9 @@ protected:
|
|||||||
// a typedef for the provided data type.
|
// a typedef for the provided data type.
|
||||||
//
|
//
|
||||||
template <class DataType> class basic_parser : public basic_parser_impl {
|
template <class DataType> class basic_parser : public basic_parser_impl {
|
||||||
|
protected:
|
||||||
|
// Workaround PR22763
|
||||||
|
basic_parser(const basic_parser& RHS) : basic_parser_impl(RHS) {}
|
||||||
public:
|
public:
|
||||||
basic_parser(Option &O) : basic_parser_impl(O) {}
|
basic_parser(Option &O) : basic_parser_impl(O) {}
|
||||||
typedef DataType parser_data_type;
|
typedef DataType parser_data_type;
|
||||||
@ -738,7 +754,7 @@ public:
|
|||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// parser<bool>
|
// parser<bool>
|
||||||
//
|
//
|
||||||
template <> class parser<bool> : public basic_parser<bool> {
|
template <> class parser<bool> final : public basic_parser<bool> {
|
||||||
public:
|
public:
|
||||||
parser(Option &O) : basic_parser(O) {}
|
parser(Option &O) : basic_parser(O) {}
|
||||||
|
|
||||||
@ -765,7 +781,7 @@ EXTERN_TEMPLATE_INSTANTIATION(class basic_parser<bool>);
|
|||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// parser<boolOrDefault>
|
// parser<boolOrDefault>
|
||||||
template <> class parser<boolOrDefault> : public basic_parser<boolOrDefault> {
|
template <> class parser<boolOrDefault> final : public basic_parser<boolOrDefault> {
|
||||||
public:
|
public:
|
||||||
parser(Option &O) : basic_parser(O) {}
|
parser(Option &O) : basic_parser(O) {}
|
||||||
|
|
||||||
@ -791,7 +807,7 @@ EXTERN_TEMPLATE_INSTANTIATION(class basic_parser<boolOrDefault>);
|
|||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// parser<int>
|
// parser<int>
|
||||||
//
|
//
|
||||||
template <> class parser<int> : public basic_parser<int> {
|
template <> class parser<int> final : public basic_parser<int> {
|
||||||
public:
|
public:
|
||||||
parser(Option &O) : basic_parser(O) {}
|
parser(Option &O) : basic_parser(O) {}
|
||||||
|
|
||||||
@ -813,7 +829,7 @@ EXTERN_TEMPLATE_INSTANTIATION(class basic_parser<int>);
|
|||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// parser<unsigned>
|
// parser<unsigned>
|
||||||
//
|
//
|
||||||
template <> class parser<unsigned> : public basic_parser<unsigned> {
|
template <> class parser<unsigned> final : public basic_parser<unsigned> {
|
||||||
public:
|
public:
|
||||||
parser(Option &O) : basic_parser(O) {}
|
parser(Option &O) : basic_parser(O) {}
|
||||||
|
|
||||||
@ -836,7 +852,7 @@ EXTERN_TEMPLATE_INSTANTIATION(class basic_parser<unsigned>);
|
|||||||
// parser<unsigned long long>
|
// parser<unsigned long long>
|
||||||
//
|
//
|
||||||
template <>
|
template <>
|
||||||
class parser<unsigned long long> : public basic_parser<unsigned long long> {
|
class parser<unsigned long long> final : public basic_parser<unsigned long long> {
|
||||||
public:
|
public:
|
||||||
parser(Option &O) : basic_parser(O) {}
|
parser(Option &O) : basic_parser(O) {}
|
||||||
|
|
||||||
@ -859,7 +875,7 @@ EXTERN_TEMPLATE_INSTANTIATION(class basic_parser<unsigned long long>);
|
|||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// parser<double>
|
// parser<double>
|
||||||
//
|
//
|
||||||
template <> class parser<double> : public basic_parser<double> {
|
template <> class parser<double> final : public basic_parser<double> {
|
||||||
public:
|
public:
|
||||||
parser(Option &O) : basic_parser(O) {}
|
parser(Option &O) : basic_parser(O) {}
|
||||||
|
|
||||||
@ -881,7 +897,7 @@ EXTERN_TEMPLATE_INSTANTIATION(class basic_parser<double>);
|
|||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// parser<float>
|
// parser<float>
|
||||||
//
|
//
|
||||||
template <> class parser<float> : public basic_parser<float> {
|
template <> class parser<float> final : public basic_parser<float> {
|
||||||
public:
|
public:
|
||||||
parser(Option &O) : basic_parser(O) {}
|
parser(Option &O) : basic_parser(O) {}
|
||||||
|
|
||||||
@ -903,7 +919,7 @@ EXTERN_TEMPLATE_INSTANTIATION(class basic_parser<float>);
|
|||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// parser<std::string>
|
// parser<std::string>
|
||||||
//
|
//
|
||||||
template <> class parser<std::string> : public basic_parser<std::string> {
|
template <> class parser<std::string> final : public basic_parser<std::string> {
|
||||||
public:
|
public:
|
||||||
parser(Option &O) : basic_parser(O) {}
|
parser(Option &O) : basic_parser(O) {}
|
||||||
|
|
||||||
@ -928,7 +944,7 @@ EXTERN_TEMPLATE_INSTANTIATION(class basic_parser<std::string>);
|
|||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// parser<char>
|
// parser<char>
|
||||||
//
|
//
|
||||||
template <> class parser<char> : public basic_parser<char> {
|
template <> class parser<char> final : public basic_parser<char> {
|
||||||
public:
|
public:
|
||||||
parser(Option &O) : basic_parser(O) {}
|
parser(Option &O) : basic_parser(O) {}
|
||||||
|
|
||||||
|
@ -38,6 +38,7 @@ class format_object_base {
|
|||||||
protected:
|
protected:
|
||||||
const char *Fmt;
|
const char *Fmt;
|
||||||
~format_object_base() {} // Disallow polymorphic deletion.
|
~format_object_base() {} // Disallow polymorphic deletion.
|
||||||
|
format_object_base(const format_object_base&) = default;
|
||||||
virtual void home(); // Out of line virtual method.
|
virtual void home(); // Out of line virtual method.
|
||||||
|
|
||||||
/// Call snprintf() for this object, on the given buffer and size.
|
/// Call snprintf() for this object, on the given buffer and size.
|
||||||
|
@ -145,11 +145,11 @@ public:
|
|||||||
unsigned int getType() const { return TypeID; }
|
unsigned int getType() const { return TypeID; }
|
||||||
|
|
||||||
void *operator new(size_t Size, BumpPtrAllocator &Alloc,
|
void *operator new(size_t Size, BumpPtrAllocator &Alloc,
|
||||||
size_t Alignment = 16) throw() {
|
size_t Alignment = 16) LLVM_NOEXCEPT {
|
||||||
return Alloc.Allocate(Size, Alignment);
|
return Alloc.Allocate(Size, Alignment);
|
||||||
}
|
}
|
||||||
|
|
||||||
void operator delete(void *Ptr, BumpPtrAllocator &Alloc, size_t Size) throw() {
|
void operator delete(void *Ptr, BumpPtrAllocator &Alloc, size_t Size) LLVM_NOEXCEPT {
|
||||||
Alloc.Deallocate(Ptr, Size);
|
Alloc.Deallocate(Ptr, Size);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,7 +157,7 @@ protected:
|
|||||||
std::unique_ptr<Document> &Doc;
|
std::unique_ptr<Document> &Doc;
|
||||||
SMRange SourceRange;
|
SMRange SourceRange;
|
||||||
|
|
||||||
void operator delete(void *) throw() {}
|
void operator delete(void *) LLVM_NOEXCEPT {}
|
||||||
|
|
||||||
virtual ~Node() {}
|
virtual ~Node() {}
|
||||||
|
|
||||||
|
@ -151,15 +151,13 @@ struct FunctionInfo {
|
|||||||
|
|
||||||
struct CFLAliasAnalysis;
|
struct CFLAliasAnalysis;
|
||||||
|
|
||||||
struct FunctionHandle : public CallbackVH {
|
struct FunctionHandle final : public CallbackVH {
|
||||||
FunctionHandle(Function *Fn, CFLAliasAnalysis *CFLAA)
|
FunctionHandle(Function *Fn, CFLAliasAnalysis *CFLAA)
|
||||||
: CallbackVH(Fn), CFLAA(CFLAA) {
|
: CallbackVH(Fn), CFLAA(CFLAA) {
|
||||||
assert(Fn != nullptr);
|
assert(Fn != nullptr);
|
||||||
assert(CFLAA != nullptr);
|
assert(CFLAA != nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~FunctionHandle() {}
|
|
||||||
|
|
||||||
void deleted() override { removeSelfFromCache(); }
|
void deleted() override { removeSelfFromCache(); }
|
||||||
void allUsesReplacedWith(Value *) override { removeSelfFromCache(); }
|
void allUsesReplacedWith(Value *) override { removeSelfFromCache(); }
|
||||||
|
|
||||||
|
@ -2365,9 +2365,9 @@ bool LLParser::ParseValID(ValID &ID, PerFunctionState *PFS) {
|
|||||||
ParseToken(lltok::rbrace, "expected end of struct constant"))
|
ParseToken(lltok::rbrace, "expected end of struct constant"))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
ID.ConstantStructElts = new Constant*[Elts.size()];
|
ID.ConstantStructElts.reset(new Constant*[Elts.size()]);
|
||||||
ID.UIntVal = Elts.size();
|
ID.UIntVal = Elts.size();
|
||||||
memcpy(ID.ConstantStructElts, Elts.data(), Elts.size()*sizeof(Elts[0]));
|
memcpy(ID.ConstantStructElts.get(), Elts.data(), Elts.size()*sizeof(Elts[0]));
|
||||||
ID.Kind = ValID::t_ConstantStruct;
|
ID.Kind = ValID::t_ConstantStruct;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -2386,8 +2386,8 @@ bool LLParser::ParseValID(ValID &ID, PerFunctionState *PFS) {
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (isPackedStruct) {
|
if (isPackedStruct) {
|
||||||
ID.ConstantStructElts = new Constant*[Elts.size()];
|
ID.ConstantStructElts.reset(new Constant*[Elts.size()]);
|
||||||
memcpy(ID.ConstantStructElts, Elts.data(), Elts.size()*sizeof(Elts[0]));
|
memcpy(ID.ConstantStructElts.get(), Elts.data(), Elts.size()*sizeof(Elts[0]));
|
||||||
ID.UIntVal = Elts.size();
|
ID.UIntVal = Elts.size();
|
||||||
ID.Kind = ValID::t_PackedConstantStruct;
|
ID.Kind = ValID::t_PackedConstantStruct;
|
||||||
return false;
|
return false;
|
||||||
@ -2512,7 +2512,12 @@ bool LLParser::ParseValID(ValID &ID, PerFunctionState *PFS) {
|
|||||||
|
|
||||||
if (!F) {
|
if (!F) {
|
||||||
// Make a global variable as a placeholder for this reference.
|
// Make a global variable as a placeholder for this reference.
|
||||||
GlobalValue *&FwdRef = ForwardRefBlockAddresses[Fn][Label];
|
GlobalValue *&FwdRef =
|
||||||
|
ForwardRefBlockAddresses.insert(std::make_pair(
|
||||||
|
std::move(Fn),
|
||||||
|
std::map<ValID, GlobalValue *>()))
|
||||||
|
.first->second.insert(std::make_pair(std::move(Label), nullptr))
|
||||||
|
.first->second;
|
||||||
if (!FwdRef)
|
if (!FwdRef)
|
||||||
FwdRef = new GlobalVariable(*M, Type::getInt8Ty(Context), false,
|
FwdRef = new GlobalVariable(*M, Type::getInt8Ty(Context), false,
|
||||||
GlobalValue::InternalLinkage, nullptr, "");
|
GlobalValue::InternalLinkage, nullptr, "");
|
||||||
@ -3942,8 +3947,8 @@ bool LLParser::ConvertValIDToValue(Type *Ty, ValID &ID, Value *&V,
|
|||||||
return Error(ID.Loc, "element " + Twine(i) +
|
return Error(ID.Loc, "element " + Twine(i) +
|
||||||
" of struct initializer doesn't match struct element type");
|
" of struct initializer doesn't match struct element type");
|
||||||
|
|
||||||
V = ConstantStruct::get(ST, makeArrayRef(ID.ConstantStructElts,
|
V = ConstantStruct::get(
|
||||||
ID.UIntVal));
|
ST, makeArrayRef(ID.ConstantStructElts.get(), ID.UIntVal));
|
||||||
} else
|
} else
|
||||||
return Error(ID.Loc, "constant expression type mismatch");
|
return Error(ID.Loc, "constant expression type mismatch");
|
||||||
return false;
|
return false;
|
||||||
|
@ -62,13 +62,9 @@ namespace llvm {
|
|||||||
APSInt APSIntVal;
|
APSInt APSIntVal;
|
||||||
APFloat APFloatVal;
|
APFloat APFloatVal;
|
||||||
Constant *ConstantVal;
|
Constant *ConstantVal;
|
||||||
Constant **ConstantStructElts;
|
std::unique_ptr<Constant*[]> ConstantStructElts;
|
||||||
|
|
||||||
ValID() : Kind(t_LocalID), APFloatVal(0.0) {}
|
ValID() : Kind(t_LocalID), APFloatVal(0.0) {}
|
||||||
~ValID() {
|
|
||||||
if (Kind == t_ConstantStruct || Kind == t_PackedConstantStruct)
|
|
||||||
delete [] ConstantStructElts;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool operator<(const ValID &RHS) const {
|
bool operator<(const ValID &RHS) const {
|
||||||
if (Kind == t_LocalID || Kind == t_GlobalID)
|
if (Kind == t_LocalID || Kind == t_GlobalID)
|
||||||
|
@ -743,7 +743,6 @@ void LiveRange::flushSegmentSet() {
|
|||||||
segments.empty() &&
|
segments.empty() &&
|
||||||
"segment set can be used only initially before switching to the array");
|
"segment set can be used only initially before switching to the array");
|
||||||
segments.append(segmentSet->begin(), segmentSet->end());
|
segments.append(segmentSet->begin(), segmentSet->end());
|
||||||
delete segmentSet;
|
|
||||||
segmentSet = nullptr;
|
segmentSet = nullptr;
|
||||||
verify();
|
verify();
|
||||||
}
|
}
|
||||||
|
@ -61,8 +61,10 @@ LiveStacks::getOrCreateInterval(int Slot, const TargetRegisterClass *RC) {
|
|||||||
assert(Slot >= 0 && "Spill slot indice must be >= 0");
|
assert(Slot >= 0 && "Spill slot indice must be >= 0");
|
||||||
SS2IntervalMap::iterator I = S2IMap.find(Slot);
|
SS2IntervalMap::iterator I = S2IMap.find(Slot);
|
||||||
if (I == S2IMap.end()) {
|
if (I == S2IMap.end()) {
|
||||||
I = S2IMap.insert(I, std::make_pair(Slot,
|
I = S2IMap.emplace(std::piecewise_construct, std::forward_as_tuple(Slot),
|
||||||
LiveInterval(TargetRegisterInfo::index2StackSlot(Slot), 0.0F)));
|
std::forward_as_tuple(
|
||||||
|
TargetRegisterInfo::index2StackSlot(Slot), 0.0F))
|
||||||
|
.first;
|
||||||
S2RCMap.insert(std::make_pair(Slot, RC));
|
S2RCMap.insert(std::make_pair(Slot, RC));
|
||||||
} else {
|
} else {
|
||||||
// Use the largest common subclass register class.
|
// Use the largest common subclass register class.
|
||||||
|
@ -9115,9 +9115,6 @@ struct LoadedSlice {
|
|||||||
unsigned Shift = 0, SelectionDAG *DAG = nullptr)
|
unsigned Shift = 0, SelectionDAG *DAG = nullptr)
|
||||||
: Inst(Inst), Origin(Origin), Shift(Shift), DAG(DAG) {}
|
: Inst(Inst), Origin(Origin), Shift(Shift), DAG(DAG) {}
|
||||||
|
|
||||||
LoadedSlice(const LoadedSlice &LS)
|
|
||||||
: Inst(LS.Inst), Origin(LS.Origin), Shift(LS.Shift), DAG(LS.DAG) {}
|
|
||||||
|
|
||||||
/// \brief Get the bits used in a chunk of bits \p BitWidth large.
|
/// \brief Get the bits used in a chunk of bits \p BitWidth large.
|
||||||
/// \return Result is \p BitWidth and has used bits set to 1 and
|
/// \return Result is \p BitWidth and has used bits set to 1 and
|
||||||
/// not used bits set to 0.
|
/// not used bits set to 0.
|
||||||
|
@ -319,7 +319,7 @@ void A57ChainingConstraint::addInterChainConstraint(PBQPRAGraph &G, unsigned Rd,
|
|||||||
|
|
||||||
static bool regJustKilledBefore(const LiveIntervals &LIs, unsigned reg,
|
static bool regJustKilledBefore(const LiveIntervals &LIs, unsigned reg,
|
||||||
const MachineInstr &MI) {
|
const MachineInstr &MI) {
|
||||||
LiveInterval LI = LIs.getInterval(reg);
|
const LiveInterval &LI = LIs.getInterval(reg);
|
||||||
SlotIndex SI = LIs.getInstructionIndex(&MI);
|
SlotIndex SI = LIs.getInstructionIndex(&MI);
|
||||||
return LI.expiredAt(SI);
|
return LI.expiredAt(SI);
|
||||||
}
|
}
|
||||||
|
@ -548,6 +548,7 @@ public:
|
|||||||
}
|
}
|
||||||
PhiState(Value *b) : status(Base), base(b) {}
|
PhiState(Value *b) : status(Base), base(b) {}
|
||||||
PhiState() : status(Unknown), base(nullptr) {}
|
PhiState() : status(Unknown), base(nullptr) {}
|
||||||
|
PhiState &operator=(const PhiState &) = default;
|
||||||
PhiState(const PhiState &other) : status(other.status), base(other.base) {
|
PhiState(const PhiState &other) : status(other.status), base(other.base) {
|
||||||
assert(status != Base || base);
|
assert(status != Base || base);
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,8 @@ namespace llvm {
|
|||||||
public:
|
public:
|
||||||
LogBuilder(Consumer &c, StringRef Format)
|
LogBuilder(Consumer &c, StringRef Format)
|
||||||
: consumer(c), Format(Format) {}
|
: consumer(c), Format(Format) {}
|
||||||
|
// Relying on RVO, not actually copyable.
|
||||||
|
LogBuilder(const LogBuilder&);
|
||||||
|
|
||||||
LogBuilder &operator<<(Value *V) {
|
LogBuilder &operator<<(Value *V) {
|
||||||
Arguments.push_back(V);
|
Arguments.push_back(V);
|
||||||
|
@ -46,6 +46,7 @@ public:
|
|||||||
CtorTester(const CtorTester &Arg) : Value(Arg.Value) {
|
CtorTester(const CtorTester &Arg) : Value(Arg.Value) {
|
||||||
EXPECT_TRUE(Constructed.insert(this).second);
|
EXPECT_TRUE(Constructed.insert(this).second);
|
||||||
}
|
}
|
||||||
|
CtorTester &operator=(const CtorTester &) = default;
|
||||||
~CtorTester() {
|
~CtorTester() {
|
||||||
EXPECT_EQ(1u, Constructed.erase(this));
|
EXPECT_EQ(1u, Constructed.erase(this));
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,9 @@ struct Node : ilist_node<Node> {
|
|||||||
int Value;
|
int Value;
|
||||||
|
|
||||||
Node() {}
|
Node() {}
|
||||||
Node(int _Value) : Value(_Value) {}
|
Node(int Value) : Value(Value) {}
|
||||||
|
Node(const Node&) = default;
|
||||||
|
Node(Node &&RHS) : Value(RHS.Value) { RHS.Value = -1; }
|
||||||
~Node() { Value = -1; }
|
~Node() { Value = -1; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -441,6 +441,8 @@ struct MatchableInfo {
|
|||||||
: AsmVariantID(0), AsmString(Alias->AsmString), TheDef(Alias->TheDef), DefRec(Alias.release()) {
|
: AsmVariantID(0), AsmString(Alias->AsmString), TheDef(Alias->TheDef), DefRec(Alias.release()) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MatchableInfo(const MatchableInfo&) = default;
|
||||||
|
|
||||||
~MatchableInfo() {
|
~MatchableInfo() {
|
||||||
delete DefRec.dyn_cast<const CodeGenInstAlias*>();
|
delete DefRec.dyn_cast<const CodeGenInstAlias*>();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user