Update prebuilt Clang to r416183b from Android.
https://android.googlesource.com/platform/prebuilts/clang/host/
linux-x86/+/06a71ddac05c22edb2d10b590e1769b3f8619bef
clang 12.0.5 (based on r416183b) from build 7284624.
Change-Id: I277a316abcf47307562d8b748b84870f31a72866
Signed-off-by: Olivier Deprez <olivier.deprez@arm.com>
diff --git a/linux-x64/clang/include/llvm/CodeGen/DIE.h b/linux-x64/clang/include/llvm/CodeGen/DIE.h
index 684f9e4..3efef6e 100644
--- a/linux-x64/clang/include/llvm/CodeGen/DIE.h
+++ b/linux-x64/clang/include/llvm/CodeGen/DIE.h
@@ -78,7 +78,7 @@
/// object.
class DIEAbbrev : public FoldingSetNode {
/// Unique number for node.
- unsigned Number;
+ unsigned Number = 0;
/// Dwarf tag code.
dwarf::Tag Tag;
@@ -190,7 +190,7 @@
uint64_t getValue() const { return Integer; }
void setValue(uint64_t Val) { Integer = Val; }
- void EmitValue(const AsmPrinter *Asm, dwarf::Form Form) const;
+ void emitValue(const AsmPrinter *Asm, dwarf::Form Form) const;
unsigned SizeOf(const AsmPrinter *AP, dwarf::Form Form) const;
void print(raw_ostream &O) const;
@@ -207,7 +207,7 @@
/// Get MCExpr.
const MCExpr *getValue() const { return Expr; }
- void EmitValue(const AsmPrinter *AP, dwarf::Form Form) const;
+ void emitValue(const AsmPrinter *AP, dwarf::Form Form) const;
unsigned SizeOf(const AsmPrinter *AP, dwarf::Form Form) const;
void print(raw_ostream &O) const;
@@ -224,7 +224,7 @@
/// Get MCSymbol.
const MCSymbol *getValue() const { return Label; }
- void EmitValue(const AsmPrinter *AP, dwarf::Form Form) const;
+ void emitValue(const AsmPrinter *AP, dwarf::Form Form) const;
unsigned SizeOf(const AsmPrinter *AP, dwarf::Form Form) const;
void print(raw_ostream &O) const;
@@ -242,11 +242,12 @@
: CU(TheCU), Index(Idx) {}
/// EmitValue - Emit base type reference.
- void EmitValue(const AsmPrinter *AP, dwarf::Form Form) const;
+ void emitValue(const AsmPrinter *AP, dwarf::Form Form) const;
/// SizeOf - Determine size of the base type reference in bytes.
unsigned SizeOf(const AsmPrinter *AP, dwarf::Form Form) const;
void print(raw_ostream &O) const;
+ uint64_t getIndex() const { return Index; }
};
//===--------------------------------------------------------------------===//
@@ -259,7 +260,7 @@
public:
DIEDelta(const MCSymbol *Hi, const MCSymbol *Lo) : LabelHi(Hi), LabelLo(Lo) {}
- void EmitValue(const AsmPrinter *AP, dwarf::Form Form) const;
+ void emitValue(const AsmPrinter *AP, dwarf::Form Form) const;
unsigned SizeOf(const AsmPrinter *AP, dwarf::Form Form) const;
void print(raw_ostream &O) const;
@@ -278,7 +279,7 @@
/// Grab the string out of the object.
StringRef getString() const { return S.getString(); }
- void EmitValue(const AsmPrinter *AP, dwarf::Form Form) const;
+ void emitValue(const AsmPrinter *AP, dwarf::Form Form) const;
unsigned SizeOf(const AsmPrinter *AP, dwarf::Form Form) const;
void print(raw_ostream &O) const;
@@ -300,7 +301,7 @@
/// Grab the string out of the object.
StringRef getString() const { return S; }
- void EmitValue(const AsmPrinter *AP, dwarf::Form Form) const;
+ void emitValue(const AsmPrinter *AP, dwarf::Form Form) const;
unsigned SizeOf(const AsmPrinter *AP, dwarf::Form Form) const;
void print(raw_ostream &O) const;
@@ -319,7 +320,7 @@
DIE &getEntry() const { return *Entry; }
- void EmitValue(const AsmPrinter *AP, dwarf::Form Form) const;
+ void emitValue(const AsmPrinter *AP, dwarf::Form Form) const;
unsigned SizeOf(const AsmPrinter *AP, dwarf::Form Form) const;
void print(raw_ostream &O) const;
@@ -338,7 +339,7 @@
/// Grab the current index out.
size_t getValue() const { return Index; }
- void EmitValue(const AsmPrinter *AP, dwarf::Form Form) const;
+ void emitValue(const AsmPrinter *AP, dwarf::Form Form) const;
unsigned SizeOf(const AsmPrinter *AP, dwarf::Form Form) const;
void print(raw_ostream &O) const;
@@ -382,12 +383,12 @@
static_assert(std::is_standard_layout<T>::value ||
std::is_pointer<T>::value,
"Expected standard layout or pointer");
- new (reinterpret_cast<void *>(Val.buffer)) T(V);
+ new (reinterpret_cast<void *>(&Val)) T(V);
}
- template <class T> T *get() { return reinterpret_cast<T *>(Val.buffer); }
+ template <class T> T *get() { return reinterpret_cast<T *>(&Val); }
template <class T> const T *get() const {
- return reinterpret_cast<const T *>(Val.buffer);
+ return reinterpret_cast<const T *>(&Val);
}
template <class T> void destruct() { get<T>()->~T(); }
@@ -485,7 +486,7 @@
#include "llvm/CodeGen/DIEValue.def"
/// Emit value via the Dwarf writer.
- void EmitValue(const AsmPrinter *AP) const;
+ void emitValue(const AsmPrinter *AP) const;
/// Return the size of a value in bytes.
unsigned SizeOf(const AsmPrinter *AP) const;
@@ -550,6 +551,25 @@
return *static_cast<T *>(Last ? Last->Next.getPointer() : nullptr);
}
+ void takeNodes(IntrusiveBackList<T> &Other) {
+ if (Other.empty())
+ return;
+
+ T *FirstNode = static_cast<T *>(Other.Last->Next.getPointer());
+ T *IterNode = FirstNode;
+ do {
+ // Keep a pointer to the node and increment the iterator.
+ T *TmpNode = IterNode;
+ IterNode = static_cast<T *>(IterNode->Next.getPointer());
+
+ // Unlink the node and push it back to this list.
+ TmpNode->Next.setPointerAndInt(TmpNode, true);
+ push_back(*TmpNode);
+ } while (IterNode != FirstNode);
+
+ Other.Last = nullptr;
+ }
+
class const_iterator;
class iterator
: public iterator_facade_base<iterator, std::forward_iterator_tag, T> {
@@ -570,7 +590,6 @@
T &operator*() const { return *static_cast<T *>(N); }
bool operator==(const iterator &X) const { return N == X.N; }
- bool operator!=(const iterator &X) const { return N != X.N; }
};
class const_iterator
@@ -593,7 +612,6 @@
const T &operator*() const { return *static_cast<const T *>(N); }
bool operator==(const const_iterator &X) const { return N == X.N; }
- bool operator!=(const const_iterator &X) const { return N != X.N; }
};
iterator begin() {
@@ -685,6 +703,10 @@
return addValue(Alloc, DIEValue(Attribute, Form, std::forward<T>(Value)));
}
+ /// Take ownership of the nodes in \p Other, and append them to the back of
+ /// the list.
+ void takeValues(DIEValueList &Other) { List.takeNodes(Other.List); }
+
value_range values() {
return make_range(value_iterator(List.begin()), value_iterator(List.end()));
}
@@ -765,7 +787,7 @@
/// Get the absolute offset within the .debug_info or .debug_types section
/// for this DIE.
- unsigned getDebugSectionOffset() const;
+ uint64_t getDebugSectionOffset() const;
/// Compute the offset of this DIE and all its children.
///
@@ -841,14 +863,11 @@
/// a valid section depending on the client that is emitting DWARF.
MCSection *Section;
uint64_t Offset; /// .debug_info or .debug_types absolute section offset.
- uint32_t Length; /// The length in bytes of all of the DIEs in this unit.
- const uint16_t Version; /// The Dwarf version number for this unit.
- const uint8_t AddrSize; /// The size in bytes of an address for this unit.
protected:
virtual ~DIEUnit() = default;
public:
- DIEUnit(uint16_t Version, uint8_t AddrSize, dwarf::Tag UnitTag);
+ explicit DIEUnit(dwarf::Tag UnitTag);
DIEUnit(const DIEUnit &RHS) = delete;
DIEUnit(DIEUnit &&RHS) = delete;
void operator=(const DIEUnit &RHS) = delete;
@@ -870,19 +889,14 @@
///
/// \returns Section pointer which can be NULL.
MCSection *getSection() const { return Section; }
- void setDebugSectionOffset(unsigned O) { Offset = O; }
- unsigned getDebugSectionOffset() const { return Offset; }
- void setLength(uint64_t L) { Length = L; }
- uint64_t getLength() const { return Length; }
- uint16_t getDwarfVersion() const { return Version; }
- uint16_t getAddressSize() const { return AddrSize; }
+ void setDebugSectionOffset(uint64_t O) { Offset = O; }
+ uint64_t getDebugSectionOffset() const { return Offset; }
DIE &getUnitDie() { return Die; }
const DIE &getUnitDie() const { return Die; }
};
struct BasicDIEUnit final : DIEUnit {
- BasicDIEUnit(uint16_t Version, uint8_t AddrSize, dwarf::Tag UnitTag)
- : DIEUnit(Version, AddrSize, UnitTag) {}
+ explicit BasicDIEUnit(dwarf::Tag UnitTag) : DIEUnit(UnitTag) {}
};
//===--------------------------------------------------------------------===//
@@ -898,6 +912,9 @@
///
unsigned ComputeSize(const AsmPrinter *AP) const;
+ // TODO: move setSize() and Size to DIEValueList.
+ void setSize(unsigned size) { Size = size; }
+
/// BestForm - Choose the best form for data.
///
dwarf::Form BestForm(unsigned DwarfVersion) const {
@@ -913,7 +930,7 @@
return dwarf::DW_FORM_block;
}
- void EmitValue(const AsmPrinter *Asm, dwarf::Form Form) const;
+ void emitValue(const AsmPrinter *Asm, dwarf::Form Form) const;
unsigned SizeOf(const AsmPrinter *AP, dwarf::Form Form) const;
void print(raw_ostream &O) const;
@@ -932,6 +949,9 @@
///
unsigned ComputeSize(const AsmPrinter *AP) const;
+ // TODO: move setSize() and Size to DIEValueList.
+ void setSize(unsigned size) { Size = size; }
+
/// BestForm - Choose the best form for data.
///
dwarf::Form BestForm() const {
@@ -944,7 +964,7 @@
return dwarf::DW_FORM_block;
}
- void EmitValue(const AsmPrinter *Asm, dwarf::Form Form) const;
+ void emitValue(const AsmPrinter *Asm, dwarf::Form Form) const;
unsigned SizeOf(const AsmPrinter *AP, dwarf::Form Form) const;
void print(raw_ostream &O) const;