14 #ifndef CODEGEN_ASMPRINTER_DIE_H__
15 #define CODEGEN_ASMPRINTER_DIE_H__
27 class MCSymbolRefExpr;
46 dwarf::Form
getForm()
const {
return Form; }
63 uint16_t ChildrenFlag;
74 DIEAbbrev(dwarf::Tag
T, uint16_t
C) : Tag(T), ChildrenFlag(C), Data() {}
77 dwarf::Tag
getTag()
const {
return Tag; }
134 explicit DIE(
unsigned Tag)
189 virtual void anchor();
237 const int64_t SignedInt =
Int;
238 if ((
char)Int == SignedInt)
return dwarf::DW_FORM_data1;
239 if ((
short)Int == SignedInt)
return dwarf::DW_FORM_data2;
240 if ((
int)Int == SignedInt)
return dwarf::DW_FORM_data4;
242 if ((
unsigned char)Int == Int)
return dwarf::DW_FORM_data1;
243 if ((
unsigned short)Int == Int)
return dwarf::DW_FORM_data2;
244 if ((
unsigned int)Int == Int)
return dwarf::DW_FORM_data4;
246 return dwarf::DW_FORM_data8;
387 assert(E &&
"Cannot construct a DIEEntry with a null DIE");
429 if ((
unsigned char)Size == Size)
return dwarf::DW_FORM_block1;
430 if ((
unsigned short)Size == Size)
return dwarf::DW_FORM_block2;
431 if ((
unsigned int)Size == Size)
return dwarf::DW_FORM_block4;
432 return dwarf::DW_FORM_block;
std::vector< DIE * > Children
static bool classof(const DIEValue *I)
static bool classof(const DIEValue *D)
DIELabel(const MCSymbol *L)
virtual void print(raw_ostream &O) const
virtual void print(raw_ostream &O) const
virtual unsigned SizeOf(AsmPrinter *AP, dwarf::Form Form) const
DIEValue * findAttribute(uint16_t Attribute)
const DIE * getCompileUnitOrNull() const
void AddAttribute(dwarf::Attribute Attribute, dwarf::Form Form)
virtual unsigned SizeOf(AsmPrinter *AP, dwarf::Form Form) const
virtual void EmitValue(AsmPrinter *AP, dwarf::Form Form) const
void print(raw_ostream &O, unsigned IndentCount=0) const
void Profile(FoldingSetNodeID &ID) const
static bool classof(const DIEValue *D)
virtual void EmitValue(AsmPrinter *AP, dwarf::Form Form) const
DIEDelta(const MCSymbol *Hi, const MCSymbol *Lo)
virtual unsigned SizeOf(AsmPrinter *AP, dwarf::Form Form) const
dwarf::Form getForm() const
ID
LLVM Calling Convention Representation.
static bool classof(const DIEValue *E)
void addValue(dwarf::Attribute Attribute, dwarf::Form Form, DIEValue *Value)
virtual void EmitValue(AsmPrinter *AP, dwarf::Form Form) const
void setNumber(unsigned N)
const MCSymbol * getValue() const
virtual void print(raw_ostream &O) const
virtual void EmitValue(AsmPrinter *AP, dwarf::Form Form) const
const DIEAbbrev & getAbbrev() const
dwarf::Tag getTag() const
unsigned getAbbrevNumber() const
static dwarf::Form BestForm(bool IsSigned, uint64_t Int)
DIEExpr - An expression DIE.
virtual unsigned SizeOf(AsmPrinter *AP, dwarf::Form Form) const =0
virtual void EmitValue(AsmPrinter *AP, dwarf::Form Form) const =0
void addChild(DIE *Child)
virtual void print(raw_ostream &O) const
uint64_t getValue() const
DIEAbbrev(dwarf::Tag T, uint16_t C)
const std::vector< DIE * > & getChildren() const
dwarf::Attribute getAttribute() const
virtual unsigned SizeOf(AsmPrinter *AP, dwarf::Form Form) const
const DIE * getCompileUnit() const
virtual void EmitValue(AsmPrinter *AP, dwarf::Form Form) const
static bool classof(const DIEValue *L)
StringRef getString() const
getString - Grab the string out of the object.
unsigned getOffset() const
virtual void print(raw_ostream &O) const
const SmallVectorImpl< DIEValue * > & getValues() const
SmallVector< DIEValue *, 12 > Values
void Profile(FoldingSetNodeID &ID) const
virtual void EmitValue(AsmPrinter *AP, dwarf::Form Form) const
dwarf::Form BestForm() const
DIEString(const DIEValue *Acc, const StringRef S)
virtual unsigned SizeOf(AsmPrinter *AP, dwarf::Form Form) const
void setOffset(unsigned O)
virtual void print(raw_ostream &O) const
virtual void print(raw_ostream &O) const =0
void print(raw_ostream &O)
const MCExpr * getValue() const
const SmallVectorImpl< DIEAbbrevData > & getData() const
virtual void EmitValue(AsmPrinter *AP, dwarf::Form Form) const
virtual unsigned SizeOf(AsmPrinter *AP, dwarf::Form Form) const
unsigned ComputeSize(AsmPrinter *AP)
dwarf::Tag getTag() const
LLVM Value Representation.
static bool classof(const DIEValue *E)
uint16_t getChildrenFlag() const
void Emit(AsmPrinter *AP) const
DIEAbbrevData(dwarf::Attribute A, dwarf::Form F)
DIEBlock - A block of values. Primarily used for location expressions.
void setChildrenFlag(uint16_t CF)
static bool classof(const DIEValue *E)
static unsigned getRefAddrSize(AsmPrinter *AP)
Returns size of a ref_addr entry.
virtual void print(raw_ostream &O) const
unsigned getNumber() const
virtual unsigned SizeOf(AsmPrinter *AP, dwarf::Form Form) const