mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-27 16:17:17 +00:00
Use lightweight DebugInfo objects directly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62276 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -160,6 +160,7 @@ namespace llvm {
|
|||||||
// ctor.
|
// ctor.
|
||||||
DIType(GlobalVariable *GV, bool, bool) : DIDescriptor(GV) {}
|
DIType(GlobalVariable *GV, bool, bool) : DIDescriptor(GV) {}
|
||||||
|
|
||||||
|
public:
|
||||||
/// isDerivedType - Return true if the specified tag is legal for
|
/// isDerivedType - Return true if the specified tag is legal for
|
||||||
/// DIDerivedType.
|
/// DIDerivedType.
|
||||||
static bool isDerivedType(unsigned TAG);
|
static bool isDerivedType(unsigned TAG);
|
||||||
|
@@ -1668,13 +1668,15 @@ private:
|
|||||||
|
|
||||||
// Construct type.
|
// Construct type.
|
||||||
DIE Buffer(DW_TAG_base_type);
|
DIE Buffer(DW_TAG_base_type);
|
||||||
if (DIBasicType *BT = dyn_cast<DIBasicType>(&Ty))
|
if (Ty.isBasicType(Ty.getTag()))
|
||||||
ConstructTypeDIE(DW_Unit, Buffer, BT);
|
ConstructTypeDIE(DW_Unit, Buffer, DIBasicType(Ty.getGV()));
|
||||||
else if (DIDerivedType *DT = dyn_cast<DIDerivedType>(&Ty))
|
else if (Ty.isDerivedType(Ty.getTag()))
|
||||||
ConstructTypeDIE(DW_Unit, Buffer, DT);
|
ConstructTypeDIE(DW_Unit, Buffer, DIDerivedType(Ty.getGV()));
|
||||||
else if (DICompositeType *CT = dyn_cast<DICompositeType>(&Ty))
|
else {
|
||||||
ConstructTypeDIE(DW_Unit, Buffer, CT);
|
assert (Ty.isCompositeType(Ty.getTag()) && "Unknown kind of DIType");
|
||||||
|
ConstructTypeDIE(DW_Unit, Buffer, DICompositeType(Ty.getGV()));
|
||||||
|
}
|
||||||
|
|
||||||
// Add debug information entry to entity and unit.
|
// Add debug information entry to entity and unit.
|
||||||
DIE *Die = DW_Unit->AddDie(Buffer);
|
DIE *Die = DW_Unit->AddDie(Buffer);
|
||||||
SetDIEntry(Slot, Die);
|
SetDIEntry(Slot, Die);
|
||||||
@@ -1683,33 +1685,33 @@ private:
|
|||||||
|
|
||||||
/// ConstructTypeDIE - Construct basic type die from DIBasicType.
|
/// ConstructTypeDIE - Construct basic type die from DIBasicType.
|
||||||
void ConstructTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
|
void ConstructTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
|
||||||
DIBasicType *BTy) {
|
DIBasicType BTy) {
|
||||||
|
|
||||||
// Get core information.
|
// Get core information.
|
||||||
const std::string &Name = BTy->getName();
|
const std::string &Name = BTy.getName();
|
||||||
Buffer.setTag(DW_TAG_base_type);
|
Buffer.setTag(DW_TAG_base_type);
|
||||||
AddUInt(&Buffer, DW_AT_encoding, DW_FORM_data1, BTy->getEncoding());
|
AddUInt(&Buffer, DW_AT_encoding, DW_FORM_data1, BTy.getEncoding());
|
||||||
// Add name if not anonymous or intermediate type.
|
// Add name if not anonymous or intermediate type.
|
||||||
if (!Name.empty())
|
if (!Name.empty())
|
||||||
AddString(&Buffer, DW_AT_name, DW_FORM_string, Name);
|
AddString(&Buffer, DW_AT_name, DW_FORM_string, Name);
|
||||||
uint64_t Size = BTy->getSizeInBits() >> 3;
|
uint64_t Size = BTy.getSizeInBits() >> 3;
|
||||||
AddUInt(&Buffer, DW_AT_byte_size, 0, Size);
|
AddUInt(&Buffer, DW_AT_byte_size, 0, Size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// ConstructTypeDIE - Construct derived type die from DIDerivedType.
|
/// ConstructTypeDIE - Construct derived type die from DIDerivedType.
|
||||||
void ConstructTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
|
void ConstructTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
|
||||||
DIDerivedType *DTy) {
|
DIDerivedType DTy) {
|
||||||
|
|
||||||
// Get core information.
|
// Get core information.
|
||||||
const std::string &Name = DTy->getName();
|
const std::string &Name = DTy.getName();
|
||||||
uint64_t Size = DTy->getSizeInBits() >> 3;
|
uint64_t Size = DTy.getSizeInBits() >> 3;
|
||||||
unsigned Tag = DTy->getTag();
|
unsigned Tag = DTy.getTag();
|
||||||
// FIXME - Workaround for templates.
|
// FIXME - Workaround for templates.
|
||||||
if (Tag == DW_TAG_inheritance) Tag = DW_TAG_reference_type;
|
if (Tag == DW_TAG_inheritance) Tag = DW_TAG_reference_type;
|
||||||
|
|
||||||
Buffer.setTag(Tag);
|
Buffer.setTag(Tag);
|
||||||
// Map to main type, void will not have a type.
|
// Map to main type, void will not have a type.
|
||||||
DIType FromTy = DTy->getTypeDerivedFrom();
|
DIType FromTy = DTy.getTypeDerivedFrom();
|
||||||
AddType(DW_Unit, &Buffer, FromTy);
|
AddType(DW_Unit, &Buffer, FromTy);
|
||||||
|
|
||||||
// Add name if not anonymous or intermediate type.
|
// Add name if not anonymous or intermediate type.
|
||||||
@@ -1721,26 +1723,26 @@ private:
|
|||||||
|
|
||||||
// Add source line info if available and TyDesc is not a forward
|
// Add source line info if available and TyDesc is not a forward
|
||||||
// declaration.
|
// declaration.
|
||||||
// FIXME - Enable this. if (!DTy->isForwardDecl())
|
// FIXME - Enable this. if (!DTy.isForwardDecl())
|
||||||
// FIXME - Enable this. AddSourceLine(&Buffer, *DTy);
|
// FIXME - Enable this. AddSourceLine(&Buffer, *DTy);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// ConstructTypeDIE - Construct type DIE from DICompositeType.
|
/// ConstructTypeDIE - Construct type DIE from DICompositeType.
|
||||||
void ConstructTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
|
void ConstructTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
|
||||||
DICompositeType *CTy) {
|
DICompositeType CTy) {
|
||||||
|
|
||||||
// Get core information.
|
// Get core information.
|
||||||
const std::string &Name = CTy->getName();
|
const std::string &Name = CTy.getName();
|
||||||
uint64_t Size = CTy->getSizeInBits() >> 3;
|
uint64_t Size = CTy.getSizeInBits() >> 3;
|
||||||
unsigned Tag = CTy->getTag();
|
unsigned Tag = CTy.getTag();
|
||||||
switch (Tag) {
|
switch (Tag) {
|
||||||
case DW_TAG_vector_type:
|
case DW_TAG_vector_type:
|
||||||
case DW_TAG_array_type:
|
case DW_TAG_array_type:
|
||||||
ConstructArrayTypeDIE(DW_Unit, Buffer, CTy);
|
ConstructArrayTypeDIE(DW_Unit, Buffer, &CTy);
|
||||||
break;
|
break;
|
||||||
//FIXME - Enable this.
|
//FIXME - Enable this.
|
||||||
// case DW_TAG_enumeration_type:
|
// case DW_TAG_enumeration_type:
|
||||||
// DIArray Elements = CTy->getTypeArray();
|
// DIArray Elements = CTy.getTypeArray();
|
||||||
// // Add enumerators to enumeration type.
|
// // Add enumerators to enumeration type.
|
||||||
// for (unsigned i = 0, N = Elements.getNumElements(); i < N; ++i)
|
// for (unsigned i = 0, N = Elements.getNumElements(); i < N; ++i)
|
||||||
// ConstructEnumTypeDIE(Buffer, &Elements.getElement(i));
|
// ConstructEnumTypeDIE(Buffer, &Elements.getElement(i));
|
||||||
@@ -1749,27 +1751,17 @@ private:
|
|||||||
{
|
{
|
||||||
// Add prototype flag.
|
// Add prototype flag.
|
||||||
AddUInt(&Buffer, DW_AT_prototyped, DW_FORM_flag, 1);
|
AddUInt(&Buffer, DW_AT_prototyped, DW_FORM_flag, 1);
|
||||||
DIArray Elements = CTy->getTypeArray();
|
DIArray Elements = CTy.getTypeArray();
|
||||||
// Add return type.
|
// Add return type.
|
||||||
DIDescriptor RTy = Elements.getElement(0);
|
DIDescriptor RTy = Elements.getElement(0);
|
||||||
if (DIBasicType *BT = dyn_cast<DIBasicType>(&RTy))
|
AddType(DW_Unit, &Buffer, DIType(RTy.getGV()));
|
||||||
AddType(DW_Unit, &Buffer, *BT);
|
|
||||||
else if (DIDerivedType *DT = dyn_cast<DIDerivedType>(&RTy))
|
|
||||||
AddType(DW_Unit, &Buffer, *DT);
|
|
||||||
else if (DICompositeType *CT = dyn_cast<DICompositeType>(&RTy))
|
|
||||||
AddType(DW_Unit, &Buffer, *CT);
|
|
||||||
|
|
||||||
//AddType(DW_Unit, &Buffer, Elements.getElement(0));
|
//AddType(DW_Unit, &Buffer, Elements.getElement(0));
|
||||||
// Add arguments.
|
// Add arguments.
|
||||||
for (unsigned i = 1, N = Elements.getNumElements(); i < N; ++i) {
|
for (unsigned i = 1, N = Elements.getNumElements(); i < N; ++i) {
|
||||||
DIE *Arg = new DIE(DW_TAG_formal_parameter);
|
DIE *Arg = new DIE(DW_TAG_formal_parameter);
|
||||||
DIDescriptor Ty = Elements.getElement(i);
|
DIDescriptor Ty = Elements.getElement(i);
|
||||||
if (DIBasicType *BT = dyn_cast<DIBasicType>(&Ty))
|
AddType(DW_Unit, &Buffer, DIType(Ty.getGV()));
|
||||||
AddType(DW_Unit, &Buffer, *BT);
|
|
||||||
else if (DIDerivedType *DT = dyn_cast<DIDerivedType>(&Ty))
|
|
||||||
AddType(DW_Unit, &Buffer, *DT);
|
|
||||||
else if (DICompositeType *CT = dyn_cast<DICompositeType>(&Ty))
|
|
||||||
AddType(DW_Unit, &Buffer, *CT);
|
|
||||||
Buffer.AddChild(Arg);
|
Buffer.AddChild(Arg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1778,16 +1770,20 @@ private:
|
|||||||
case DW_TAG_union_type:
|
case DW_TAG_union_type:
|
||||||
{
|
{
|
||||||
// Add elements to structure type.
|
// Add elements to structure type.
|
||||||
DIArray Elements = CTy->getTypeArray();
|
DIArray Elements = CTy.getTypeArray();
|
||||||
// Add elements to structure type.
|
// Add elements to structure type.
|
||||||
for (unsigned i = 0, N = Elements.getNumElements(); i < N; ++i) {
|
for (unsigned i = 0, N = Elements.getNumElements(); i < N; ++i) {
|
||||||
DIDescriptor Element = Elements.getElement(i);
|
DIDescriptor Element = Elements.getElement(i);
|
||||||
if (DISubprogram *SP = dyn_cast<DISubprogram>(&Element))
|
if (Element.getTag() == dwarf::DW_TAG_subprogram)
|
||||||
ConstructFieldTypeDIE(DW_Unit, Buffer, SP);
|
ConstructFieldTypeDIE(DW_Unit, Buffer, DISubprogram(Element.getGV()));
|
||||||
else if (DIDerivedType *DT = dyn_cast<DIDerivedType>(&Element))
|
else if (Element.getTag() == dwarf::DW_TAG_variable)
|
||||||
|
ConstructFieldTypeDIE(DW_Unit, Buffer,
|
||||||
|
DIGlobalVariable(Element.getGV()));
|
||||||
|
else {
|
||||||
|
DIDerivedType DT = DIDerivedType(Element.getGV());
|
||||||
|
assert (DT.isDerivedType(DT.getTag()) && "Unexpected strcut element");
|
||||||
ConstructFieldTypeDIE(DW_Unit, Buffer, DT);
|
ConstructFieldTypeDIE(DW_Unit, Buffer, DT);
|
||||||
else if (DIGlobalVariable *GV = dyn_cast<DIGlobalVariable>(&Element))
|
}
|
||||||
ConstructFieldTypeDIE(DW_Unit, Buffer, GV);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1804,7 +1800,7 @@ private:
|
|||||||
else {
|
else {
|
||||||
// Add zero size even if it is not a forward declaration.
|
// Add zero size even if it is not a forward declaration.
|
||||||
// FIXME - Enable this.
|
// FIXME - Enable this.
|
||||||
// if (!CTy->isDefinition())
|
// if (!CTy.isDefinition())
|
||||||
// AddUInt(&Buffer, DW_AT_declaration, DW_FORM_flag, 1);
|
// AddUInt(&Buffer, DW_AT_declaration, DW_FORM_flag, 1);
|
||||||
// else
|
// else
|
||||||
// AddUInt(&Buffer, DW_AT_byte_size, 0, 0);
|
// AddUInt(&Buffer, DW_AT_byte_size, 0, 0);
|
||||||
@@ -1813,14 +1809,14 @@ private:
|
|||||||
// Add source line info if available and TyDesc is not a forward
|
// Add source line info if available and TyDesc is not a forward
|
||||||
// declaration.
|
// declaration.
|
||||||
// FIXME - Enable this.
|
// FIXME - Enable this.
|
||||||
// if (CTy->isForwardDecl())
|
// if (CTy.isForwardDecl())
|
||||||
// AddSourceLine(&Buffer, *CTy);
|
// AddSourceLine(&Buffer, *CTy);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ConstructSubrangeDIE - Construct subrange DIE from DISubrange.
|
// ConstructSubrangeDIE - Construct subrange DIE from DISubrange.
|
||||||
void ConstructSubrangeDIE (DIE &Buffer, DISubrange *SR, DIE *IndexTy) {
|
void ConstructSubrangeDIE (DIE &Buffer, DISubrange SR, DIE *IndexTy) {
|
||||||
int64_t L = SR->getLo();
|
int64_t L = SR.getLo();
|
||||||
int64_t H = SR->getHi();
|
int64_t H = SR.getHi();
|
||||||
DIE *DW_Subrange = new DIE(DW_TAG_subrange_type);
|
DIE *DW_Subrange = new DIE(DW_TAG_subrange_type);
|
||||||
if (L != H) {
|
if (L != H) {
|
||||||
AddDIEntry(DW_Subrange, DW_AT_type, DW_FORM_ref4, IndexTy);
|
AddDIEntry(DW_Subrange, DW_AT_type, DW_FORM_ref4, IndexTy);
|
||||||
@@ -1851,8 +1847,8 @@ private:
|
|||||||
// Add subranges to array type.
|
// Add subranges to array type.
|
||||||
for (unsigned i = 0, N = Elements.getNumElements(); i < N; ++i) {
|
for (unsigned i = 0, N = Elements.getNumElements(); i < N; ++i) {
|
||||||
DIDescriptor Element = Elements.getElement(i);
|
DIDescriptor Element = Elements.getElement(i);
|
||||||
if (DISubrange *SR = dyn_cast<DISubrange>(&Element))
|
if (Element.getTag() == dwarf::DW_TAG_subrange_type)
|
||||||
ConstructSubrangeDIE(Buffer, SR, IndexTy);
|
ConstructSubrangeDIE(Buffer, DISubrange(Element.getGV()), IndexTy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1870,16 +1866,16 @@ private:
|
|||||||
|
|
||||||
/// ConstructFieldTypeDIE - Construct variable DIE for a struct field.
|
/// ConstructFieldTypeDIE - Construct variable DIE for a struct field.
|
||||||
void ConstructFieldTypeDIE(CompileUnit *DW_Unit,
|
void ConstructFieldTypeDIE(CompileUnit *DW_Unit,
|
||||||
DIE &Buffer, DIGlobalVariable *V) {
|
DIE &Buffer, DIGlobalVariable V) {
|
||||||
|
|
||||||
DIE *VariableDie = new DIE(DW_TAG_variable);
|
DIE *VariableDie = new DIE(DW_TAG_variable);
|
||||||
const std::string &LinkageName = V->getLinkageName();
|
const std::string &LinkageName = V.getLinkageName();
|
||||||
if (!LinkageName.empty())
|
if (!LinkageName.empty())
|
||||||
AddString(VariableDie, DW_AT_MIPS_linkage_name, DW_FORM_string,
|
AddString(VariableDie, DW_AT_MIPS_linkage_name, DW_FORM_string,
|
||||||
LinkageName);
|
LinkageName);
|
||||||
// FIXME - Enable this. AddSourceLine(VariableDie, V);
|
// FIXME - Enable this. AddSourceLine(VariableDie, V);
|
||||||
AddType(DW_Unit, VariableDie, V->getType());
|
AddType(DW_Unit, VariableDie, V.getType());
|
||||||
if (!V->isLocalToUnit())
|
if (!V.isLocalToUnit())
|
||||||
AddUInt(VariableDie, DW_AT_external, DW_FORM_flag, 1);
|
AddUInt(VariableDie, DW_AT_external, DW_FORM_flag, 1);
|
||||||
AddUInt(VariableDie, DW_AT_declaration, DW_FORM_flag, 1);
|
AddUInt(VariableDie, DW_AT_declaration, DW_FORM_flag, 1);
|
||||||
Buffer.AddChild(VariableDie);
|
Buffer.AddChild(VariableDie);
|
||||||
@@ -1887,62 +1883,49 @@ private:
|
|||||||
|
|
||||||
/// ConstructFieldTypeDIE - Construct subprogram DIE for a struct field.
|
/// ConstructFieldTypeDIE - Construct subprogram DIE for a struct field.
|
||||||
void ConstructFieldTypeDIE(CompileUnit *DW_Unit,
|
void ConstructFieldTypeDIE(CompileUnit *DW_Unit,
|
||||||
DIE &Buffer, DISubprogram *SP,
|
DIE &Buffer, DISubprogram SP,
|
||||||
bool IsConstructor = false) {
|
bool IsConstructor = false) {
|
||||||
DIE *Method = new DIE(DW_TAG_subprogram);
|
DIE *Method = new DIE(DW_TAG_subprogram);
|
||||||
AddString(Method, DW_AT_name, DW_FORM_string, SP->getName());
|
AddString(Method, DW_AT_name, DW_FORM_string, SP.getName());
|
||||||
const std::string &LinkageName = SP->getLinkageName();
|
const std::string &LinkageName = SP.getLinkageName();
|
||||||
if (!LinkageName.empty())
|
if (!LinkageName.empty())
|
||||||
AddString(Method, DW_AT_MIPS_linkage_name, DW_FORM_string, LinkageName);
|
AddString(Method, DW_AT_MIPS_linkage_name, DW_FORM_string, LinkageName);
|
||||||
// FIXME - Enable this. AddSourceLine(Method, SP);
|
// FIXME - Enable this. AddSourceLine(Method, SP);
|
||||||
|
|
||||||
DICompositeType MTy = SP->getType();
|
DICompositeType MTy = SP.getType();
|
||||||
DIArray Args = MTy.getTypeArray();
|
DIArray Args = MTy.getTypeArray();
|
||||||
|
|
||||||
// Add Return Type.
|
// Add Return Type.
|
||||||
if (!IsConstructor) {
|
if (!IsConstructor)
|
||||||
DIDescriptor Ty = Args.getElement(0);
|
AddType(DW_Unit, Method, DIType(Args.getElement(0).getGV()));
|
||||||
if (DIBasicType *BT = dyn_cast<DIBasicType>(&Ty))
|
|
||||||
AddType(DW_Unit, Method, *BT);
|
|
||||||
else if (DIDerivedType *DT = dyn_cast<DIDerivedType>(&Ty))
|
|
||||||
AddType(DW_Unit, Method, *DT);
|
|
||||||
else if (DICompositeType *CT = dyn_cast<DICompositeType>(&Ty))
|
|
||||||
AddType(DW_Unit, Method, *CT);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add arguments.
|
// Add arguments.
|
||||||
for (unsigned i = 1, N = Args.getNumElements(); i < N; ++i) {
|
for (unsigned i = 1, N = Args.getNumElements(); i < N; ++i) {
|
||||||
DIE *Arg = new DIE(DW_TAG_formal_parameter);
|
DIE *Arg = new DIE(DW_TAG_formal_parameter);
|
||||||
DIDescriptor Ty = Args.getElement(i);
|
AddType(DW_Unit, Method, DIType(Args.getElement(i).getGV()));
|
||||||
if (DIBasicType *BT = dyn_cast<DIBasicType>(&Ty))
|
|
||||||
AddType(DW_Unit, Method, *BT);
|
|
||||||
else if (DIDerivedType *DT = dyn_cast<DIDerivedType>(&Ty))
|
|
||||||
AddType(DW_Unit, Method, *DT);
|
|
||||||
else if (DICompositeType *CT = dyn_cast<DICompositeType>(&Ty))
|
|
||||||
AddType(DW_Unit, Method, *CT);
|
|
||||||
AddUInt(Arg, DW_AT_artificial, DW_FORM_flag, 1); // ???
|
AddUInt(Arg, DW_AT_artificial, DW_FORM_flag, 1); // ???
|
||||||
Method->AddChild(Arg);
|
Method->AddChild(Arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!SP->isLocalToUnit())
|
if (!SP.isLocalToUnit())
|
||||||
AddUInt(Method, DW_AT_external, DW_FORM_flag, 1);
|
AddUInt(Method, DW_AT_external, DW_FORM_flag, 1);
|
||||||
Buffer.AddChild(Method);
|
Buffer.AddChild(Method);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// COnstructFieldTypeDIE - Construct derived type DIE for a struct field.
|
/// ConstructFieldTypeDIE - Construct derived type DIE for a struct field.
|
||||||
void ConstructFieldTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
|
void ConstructFieldTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
|
||||||
DIDerivedType *DTy) {
|
DIDerivedType DTy) {
|
||||||
unsigned Tag = DTy->getTag();
|
unsigned Tag = DTy.getTag();
|
||||||
DIE *MemberDie = new DIE(Tag);
|
DIE *MemberDie = new DIE(Tag);
|
||||||
if (!DTy->getName().empty())
|
if (!DTy.getName().empty())
|
||||||
AddString(MemberDie, DW_AT_name, DW_FORM_string, DTy->getName());
|
AddString(MemberDie, DW_AT_name, DW_FORM_string, DTy.getName());
|
||||||
// FIXME - Enable this. AddSourceLine(MemberDie, DTy);
|
// FIXME - Enable this. AddSourceLine(MemberDie, DTy);
|
||||||
|
|
||||||
DIType FromTy = DTy->getTypeDerivedFrom();
|
DIType FromTy = DTy.getTypeDerivedFrom();
|
||||||
AddType(DW_Unit, MemberDie, FromTy);
|
AddType(DW_Unit, MemberDie, FromTy);
|
||||||
|
|
||||||
uint64_t Size = DTy->getSizeInBits();
|
uint64_t Size = DTy.getSizeInBits();
|
||||||
uint64_t Offset = DTy->getOffsetInBits();
|
uint64_t Offset = DTy.getOffsetInBits();
|
||||||
|
|
||||||
// FIXME Handle bitfields
|
// FIXME Handle bitfields
|
||||||
|
|
||||||
|
@@ -12,7 +12,6 @@
|
|||||||
// Only works on ppc, x86 and x86_64. Should generalize?
|
// Only works on ppc, x86 and x86_64. Should generalize?
|
||||||
// FIXME: Un-XFAIL this test for Linux when debug stuff is working again.
|
// FIXME: Un-XFAIL this test for Linux when debug stuff is working again.
|
||||||
// XFAIL: alpha|ia64|arm|linux
|
// XFAIL: alpha|ia64|arm|linux
|
||||||
// XFAIL: *
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user