mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-10 22:00:58 +00:00
Use StringRef (again) in DebugInfo interface.
llvm-svn: 89866
This commit is contained in:
parent
aee7a9e676
commit
d50fc13c19
@ -55,7 +55,7 @@ namespace llvm {
|
||||
/// not, the debug info is corrupt and we ignore it.
|
||||
DIDescriptor(MDNode *N, unsigned RequiredTag);
|
||||
|
||||
const char *getStringField(unsigned Elt) const;
|
||||
StringRef getStringField(unsigned Elt) const;
|
||||
unsigned getUnsignedField(unsigned Elt) const {
|
||||
return (unsigned)getUInt64Field(Elt);
|
||||
}
|
||||
@ -137,8 +137,8 @@ namespace llvm {
|
||||
}
|
||||
virtual ~DIScope() {}
|
||||
|
||||
const char *getFilename() const;
|
||||
const char *getDirectory() const;
|
||||
StringRef getFilename() const;
|
||||
StringRef getDirectory() const;
|
||||
};
|
||||
|
||||
/// DICompileUnit - A wrapper for a compile unit.
|
||||
@ -150,9 +150,9 @@ namespace llvm {
|
||||
}
|
||||
|
||||
unsigned getLanguage() const { return getUnsignedField(2); }
|
||||
const char *getFilename() const { return getStringField(3); }
|
||||
const char *getDirectory() const { return getStringField(4); }
|
||||
const char *getProducer() const { return getStringField(5); }
|
||||
StringRef getFilename() const { return getStringField(3); }
|
||||
StringRef getDirectory() const { return getStringField(4); }
|
||||
StringRef getProducer() const { return getStringField(5); }
|
||||
|
||||
/// isMain - Each input file is encoded as a separate compile unit in LLVM
|
||||
/// debugging information output. However, many target specific tool chains
|
||||
@ -165,7 +165,7 @@ namespace llvm {
|
||||
|
||||
bool isMain() const { return getUnsignedField(6); }
|
||||
bool isOptimized() const { return getUnsignedField(7); }
|
||||
const char *getFlags() const { return getStringField(8); }
|
||||
StringRef getFlags() const { return getStringField(8); }
|
||||
unsigned getRunTimeVersion() const { return getUnsignedField(9); }
|
||||
|
||||
/// Verify - Verify that a compile unit is well formed.
|
||||
@ -183,7 +183,7 @@ namespace llvm {
|
||||
explicit DIEnumerator(MDNode *N = 0)
|
||||
: DIDescriptor(N, dwarf::DW_TAG_enumerator) {}
|
||||
|
||||
const char *getName() const { return getStringField(1); }
|
||||
StringRef getName() const { return getStringField(1); }
|
||||
uint64_t getEnumValue() const { return getUInt64Field(2); }
|
||||
};
|
||||
|
||||
@ -217,7 +217,7 @@ namespace llvm {
|
||||
virtual ~DIType() {}
|
||||
|
||||
DIDescriptor getContext() const { return getDescriptorField(1); }
|
||||
const char *getName() const { return getStringField(2); }
|
||||
StringRef getName() const { return getStringField(2); }
|
||||
DICompileUnit getCompileUnit() const{ return getFieldAs<DICompileUnit>(3); }
|
||||
unsigned getLineNumber() const { return getUnsignedField(4); }
|
||||
uint64_t getSizeInBits() const { return getUInt64Field(5); }
|
||||
@ -317,9 +317,9 @@ namespace llvm {
|
||||
virtual ~DIGlobal() {}
|
||||
|
||||
DIDescriptor getContext() const { return getDescriptorField(2); }
|
||||
const char *getName() const { return getStringField(3); }
|
||||
const char *getDisplayName() const { return getStringField(4); }
|
||||
const char *getLinkageName() const { return getStringField(5); }
|
||||
StringRef getName() const { return getStringField(3); }
|
||||
StringRef getDisplayName() const { return getStringField(4); }
|
||||
StringRef getLinkageName() const { return getStringField(5); }
|
||||
DICompileUnit getCompileUnit() const{ return getFieldAs<DICompileUnit>(6); }
|
||||
unsigned getLineNumber() const { return getUnsignedField(7); }
|
||||
DIType getType() const { return getFieldAs<DIType>(8); }
|
||||
@ -342,16 +342,16 @@ namespace llvm {
|
||||
}
|
||||
|
||||
DIDescriptor getContext() const { return getDescriptorField(2); }
|
||||
const char *getName() const { return getStringField(3); }
|
||||
const char *getDisplayName() const { return getStringField(4); }
|
||||
const char *getLinkageName() const { return getStringField(5); }
|
||||
StringRef getName() const { return getStringField(3); }
|
||||
StringRef getDisplayName() const { return getStringField(4); }
|
||||
StringRef getLinkageName() const { return getStringField(5); }
|
||||
DICompileUnit getCompileUnit() const{ return getFieldAs<DICompileUnit>(6); }
|
||||
unsigned getLineNumber() const { return getUnsignedField(7); }
|
||||
DICompositeType getType() const { return getFieldAs<DICompositeType>(8); }
|
||||
|
||||
/// getReturnTypeName - Subprogram return types are encoded either as
|
||||
/// DIType or as DICompositeType.
|
||||
const char *getReturnTypeName() const {
|
||||
StringRef getReturnTypeName() const {
|
||||
DICompositeType DCT(getFieldAs<DICompositeType>(8));
|
||||
if (!DCT.isNull()) {
|
||||
DIArray A = DCT.getTypeArray();
|
||||
@ -366,8 +366,8 @@ namespace llvm {
|
||||
/// compile unit, like 'static' in C.
|
||||
unsigned isLocalToUnit() const { return getUnsignedField(9); }
|
||||
unsigned isDefinition() const { return getUnsignedField(10); }
|
||||
const char *getFilename() const { return getCompileUnit().getFilename();}
|
||||
const char *getDirectory() const { return getCompileUnit().getDirectory();}
|
||||
StringRef getFilename() const { return getCompileUnit().getFilename();}
|
||||
StringRef getDirectory() const { return getCompileUnit().getDirectory();}
|
||||
|
||||
/// Verify - Verify that a subprogram descriptor is well formed.
|
||||
bool Verify() const;
|
||||
@ -406,7 +406,7 @@ namespace llvm {
|
||||
}
|
||||
|
||||
DIDescriptor getContext() const { return getDescriptorField(1); }
|
||||
const char *getName() const { return getStringField(2); }
|
||||
StringRef getName() const { return getStringField(2); }
|
||||
DICompileUnit getCompileUnit() const{ return getFieldAs<DICompileUnit>(3); }
|
||||
unsigned getLineNumber() const { return getUnsignedField(4); }
|
||||
DIType getType() const { return getFieldAs<DIType>(5); }
|
||||
@ -444,8 +444,8 @@ namespace llvm {
|
||||
DbgNode = 0;
|
||||
}
|
||||
DIScope getContext() const { return getFieldAs<DIScope>(1); }
|
||||
const char *getDirectory() const { return getContext().getDirectory(); }
|
||||
const char *getFilename() const { return getContext().getFilename(); }
|
||||
StringRef getDirectory() const { return getContext().getDirectory(); }
|
||||
StringRef getFilename() const { return getContext().getFilename(); }
|
||||
};
|
||||
|
||||
/// DILocation - This object holds location information. This object
|
||||
@ -458,8 +458,8 @@ namespace llvm {
|
||||
unsigned getColumnNumber() const { return getUnsignedField(1); }
|
||||
DIScope getScope() const { return getFieldAs<DIScope>(2); }
|
||||
DILocation getOrigLocation() const { return getFieldAs<DILocation>(3); }
|
||||
const char *getFilename() const { return getScope().getFilename(); }
|
||||
const char *getDirectory() const { return getScope().getDirectory(); }
|
||||
StringRef getFilename() const { return getScope().getFilename(); }
|
||||
StringRef getDirectory() const { return getScope().getDirectory(); }
|
||||
};
|
||||
|
||||
/// DIFactory - This object assists with the construction of the various
|
||||
@ -489,26 +489,26 @@ namespace llvm {
|
||||
/// CreateCompileUnit - Create a new descriptor for the specified compile
|
||||
/// unit.
|
||||
DICompileUnit CreateCompileUnit(unsigned LangID,
|
||||
const char * Filename,
|
||||
const char * Directory,
|
||||
const char * Producer,
|
||||
StringRef Filename,
|
||||
StringRef Directory,
|
||||
StringRef Producer,
|
||||
bool isMain = false,
|
||||
bool isOptimized = false,
|
||||
const char *Flags = "",
|
||||
StringRef Flags = "",
|
||||
unsigned RunTimeVer = 0);
|
||||
|
||||
/// CreateEnumerator - Create a single enumerator value.
|
||||
DIEnumerator CreateEnumerator(const char * Name, uint64_t Val);
|
||||
DIEnumerator CreateEnumerator(StringRef Name, uint64_t Val);
|
||||
|
||||
/// CreateBasicType - Create a basic type like int, float, etc.
|
||||
DIBasicType CreateBasicType(DIDescriptor Context, const char * Name,
|
||||
DIBasicType CreateBasicType(DIDescriptor Context, StringRef Name,
|
||||
DICompileUnit CompileUnit, unsigned LineNumber,
|
||||
uint64_t SizeInBits, uint64_t AlignInBits,
|
||||
uint64_t OffsetInBits, unsigned Flags,
|
||||
unsigned Encoding);
|
||||
|
||||
/// CreateBasicType - Create a basic type like int, float, etc.
|
||||
DIBasicType CreateBasicTypeEx(DIDescriptor Context, const char * Name,
|
||||
DIBasicType CreateBasicTypeEx(DIDescriptor Context, StringRef Name,
|
||||
DICompileUnit CompileUnit, unsigned LineNumber,
|
||||
Constant *SizeInBits, Constant *AlignInBits,
|
||||
Constant *OffsetInBits, unsigned Flags,
|
||||
@ -517,7 +517,7 @@ namespace llvm {
|
||||
/// CreateDerivedType - Create a derived type like const qualified type,
|
||||
/// pointer, typedef, etc.
|
||||
DIDerivedType CreateDerivedType(unsigned Tag, DIDescriptor Context,
|
||||
const char * Name,
|
||||
StringRef Name,
|
||||
DICompileUnit CompileUnit,
|
||||
unsigned LineNumber,
|
||||
uint64_t SizeInBits, uint64_t AlignInBits,
|
||||
@ -527,7 +527,7 @@ namespace llvm {
|
||||
/// CreateDerivedType - Create a derived type like const qualified type,
|
||||
/// pointer, typedef, etc.
|
||||
DIDerivedType CreateDerivedTypeEx(unsigned Tag, DIDescriptor Context,
|
||||
const char * Name,
|
||||
StringRef Name,
|
||||
DICompileUnit CompileUnit,
|
||||
unsigned LineNumber,
|
||||
Constant *SizeInBits, Constant *AlignInBits,
|
||||
@ -536,7 +536,7 @@ namespace llvm {
|
||||
|
||||
/// CreateCompositeType - Create a composite type like array, struct, etc.
|
||||
DICompositeType CreateCompositeType(unsigned Tag, DIDescriptor Context,
|
||||
const char * Name,
|
||||
StringRef Name,
|
||||
DICompileUnit CompileUnit,
|
||||
unsigned LineNumber,
|
||||
uint64_t SizeInBits,
|
||||
@ -548,7 +548,7 @@ namespace llvm {
|
||||
|
||||
/// CreateCompositeType - Create a composite type like array, struct, etc.
|
||||
DICompositeType CreateCompositeTypeEx(unsigned Tag, DIDescriptor Context,
|
||||
const char * Name,
|
||||
StringRef Name,
|
||||
DICompileUnit CompileUnit,
|
||||
unsigned LineNumber,
|
||||
Constant *SizeInBits,
|
||||
@ -560,25 +560,25 @@ namespace llvm {
|
||||
|
||||
/// CreateSubprogram - Create a new descriptor for the specified subprogram.
|
||||
/// See comments in DISubprogram for descriptions of these fields.
|
||||
DISubprogram CreateSubprogram(DIDescriptor Context, const char * Name,
|
||||
const char * DisplayName,
|
||||
const char * LinkageName,
|
||||
DISubprogram CreateSubprogram(DIDescriptor Context, StringRef Name,
|
||||
StringRef DisplayName,
|
||||
StringRef LinkageName,
|
||||
DICompileUnit CompileUnit, unsigned LineNo,
|
||||
DIType Type, bool isLocalToUnit,
|
||||
bool isDefinition);
|
||||
|
||||
/// CreateGlobalVariable - Create a new descriptor for the specified global.
|
||||
DIGlobalVariable
|
||||
CreateGlobalVariable(DIDescriptor Context, const char * Name,
|
||||
const char * DisplayName,
|
||||
const char * LinkageName,
|
||||
CreateGlobalVariable(DIDescriptor Context, StringRef Name,
|
||||
StringRef DisplayName,
|
||||
StringRef LinkageName,
|
||||
DICompileUnit CompileUnit,
|
||||
unsigned LineNo, DIType Type, bool isLocalToUnit,
|
||||
bool isDefinition, llvm::GlobalVariable *GV);
|
||||
|
||||
/// CreateVariable - Create a new descriptor for the specified variable.
|
||||
DIVariable CreateVariable(unsigned Tag, DIDescriptor Context,
|
||||
const char * Name,
|
||||
StringRef Name,
|
||||
DICompileUnit CompileUnit, unsigned LineNo,
|
||||
DIType Type);
|
||||
|
||||
|
@ -78,19 +78,16 @@ DIDescriptor::DIDescriptor(MDNode *N, unsigned RequiredTag) {
|
||||
}
|
||||
}
|
||||
|
||||
const char *
|
||||
StringRef
|
||||
DIDescriptor::getStringField(unsigned Elt) const {
|
||||
if (DbgNode == 0)
|
||||
return NULL;
|
||||
return StringRef();
|
||||
|
||||
if (Elt < DbgNode->getNumElements())
|
||||
if (MDString *MDS = dyn_cast_or_null<MDString>(DbgNode->getElement(Elt))) {
|
||||
if (MDS->getLength() == 0)
|
||||
return NULL;
|
||||
return MDS->getString().data();
|
||||
}
|
||||
if (MDString *MDS = dyn_cast_or_null<MDString>(DbgNode->getElement(Elt)))
|
||||
return MDS->getString();
|
||||
|
||||
return NULL;
|
||||
return StringRef();
|
||||
}
|
||||
|
||||
uint64_t DIDescriptor::getUInt64Field(unsigned Elt) const {
|
||||
@ -310,8 +307,8 @@ void DIDerivedType::replaceAllUsesWith(DIDescriptor &D) {
|
||||
bool DICompileUnit::Verify() const {
|
||||
if (isNull())
|
||||
return false;
|
||||
const char *N = getFilename();
|
||||
if (!N)
|
||||
StringRef N = getFilename();
|
||||
if (N.empty())
|
||||
return false;
|
||||
// It is possible that directory and produce string is empty.
|
||||
return true;
|
||||
@ -366,7 +363,7 @@ bool DIGlobalVariable::Verify() const {
|
||||
if (isNull())
|
||||
return false;
|
||||
|
||||
if (!getDisplayName())
|
||||
if (getDisplayName().empty())
|
||||
return false;
|
||||
|
||||
if (getContext().isNull())
|
||||
@ -426,15 +423,15 @@ uint64_t DIDerivedType::getOriginalTypeSize() const {
|
||||
/// information for the function F.
|
||||
bool DISubprogram::describes(const Function *F) {
|
||||
assert (F && "Invalid function");
|
||||
const char *Name = getLinkageName();
|
||||
if (!Name)
|
||||
StringRef Name = getLinkageName();
|
||||
if (Name.empty())
|
||||
Name = getName();
|
||||
if (strcmp(F->getName().data(), Name) == 0)
|
||||
if (F->getName() == Name)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
const char *DIScope::getFilename() const {
|
||||
StringRef DIScope::getFilename() const {
|
||||
if (isLexicalBlock())
|
||||
return DILexicalBlock(DbgNode).getFilename();
|
||||
else if (isSubprogram())
|
||||
@ -443,10 +440,10 @@ const char *DIScope::getFilename() const {
|
||||
return DICompileUnit(DbgNode).getFilename();
|
||||
else
|
||||
assert (0 && "Invalid DIScope!");
|
||||
return NULL;
|
||||
return StringRef();
|
||||
}
|
||||
|
||||
const char *DIScope::getDirectory() const {
|
||||
StringRef DIScope::getDirectory() const {
|
||||
if (isLexicalBlock())
|
||||
return DILexicalBlock(DbgNode).getDirectory();
|
||||
else if (isSubprogram())
|
||||
@ -455,7 +452,7 @@ const char *DIScope::getDirectory() const {
|
||||
return DICompileUnit(DbgNode).getDirectory();
|
||||
else
|
||||
assert (0 && "Invalid DIScope!");
|
||||
return NULL;
|
||||
return StringRef();
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
@ -481,7 +478,8 @@ void DICompileUnit::dump() const {
|
||||
void DIType::dump() const {
|
||||
if (isNull()) return;
|
||||
|
||||
if (const char *Res = getName())
|
||||
StringRef Res = getName();
|
||||
if (!Res.empty())
|
||||
errs() << " [" << Res << "] ";
|
||||
|
||||
unsigned Tag = getTag();
|
||||
@ -538,7 +536,8 @@ void DICompositeType::dump() const {
|
||||
|
||||
/// dump - Print global.
|
||||
void DIGlobal::dump() const {
|
||||
if (const char *Res = getName())
|
||||
StringRef Res = getName();
|
||||
if (!Res.empty())
|
||||
errs() << " [" << Res << "] ";
|
||||
|
||||
unsigned Tag = getTag();
|
||||
@ -562,7 +561,8 @@ void DIGlobal::dump() const {
|
||||
|
||||
/// dump - Print subprogram.
|
||||
void DISubprogram::dump() const {
|
||||
if (const char *Res = getName())
|
||||
StringRef Res = getName();
|
||||
if (!Res.empty())
|
||||
errs() << " [" << Res << "] ";
|
||||
|
||||
unsigned Tag = getTag();
|
||||
@ -590,7 +590,8 @@ void DIGlobalVariable::dump() const {
|
||||
|
||||
/// dump - Print variable.
|
||||
void DIVariable::dump() const {
|
||||
if (const char *Res = getName())
|
||||
StringRef Res = getName();
|
||||
if (!Res.empty())
|
||||
errs() << " [" << Res << "] ";
|
||||
|
||||
getCompileUnit().dump();
|
||||
@ -651,12 +652,12 @@ DISubrange DIFactory::GetOrCreateSubrange(int64_t Lo, int64_t Hi) {
|
||||
/// CreateCompileUnit - Create a new descriptor for the specified compile
|
||||
/// unit. Note that this does not unique compile units within the module.
|
||||
DICompileUnit DIFactory::CreateCompileUnit(unsigned LangID,
|
||||
const char * Filename,
|
||||
const char * Directory,
|
||||
const char * Producer,
|
||||
StringRef Filename,
|
||||
StringRef Directory,
|
||||
StringRef Producer,
|
||||
bool isMain,
|
||||
bool isOptimized,
|
||||
const char *Flags,
|
||||
StringRef Flags,
|
||||
unsigned RunTimeVer) {
|
||||
Value *Elts[] = {
|
||||
GetTagConstant(dwarf::DW_TAG_compile_unit),
|
||||
@ -675,7 +676,7 @@ DICompileUnit DIFactory::CreateCompileUnit(unsigned LangID,
|
||||
}
|
||||
|
||||
/// CreateEnumerator - Create a single enumerator value.
|
||||
DIEnumerator DIFactory::CreateEnumerator(const char * Name, uint64_t Val){
|
||||
DIEnumerator DIFactory::CreateEnumerator(StringRef Name, uint64_t Val){
|
||||
Value *Elts[] = {
|
||||
GetTagConstant(dwarf::DW_TAG_enumerator),
|
||||
MDString::get(VMContext, Name),
|
||||
@ -687,7 +688,7 @@ DIEnumerator DIFactory::CreateEnumerator(const char * Name, uint64_t Val){
|
||||
|
||||
/// CreateBasicType - Create a basic type like int, float, etc.
|
||||
DIBasicType DIFactory::CreateBasicType(DIDescriptor Context,
|
||||
const char * Name,
|
||||
StringRef Name,
|
||||
DICompileUnit CompileUnit,
|
||||
unsigned LineNumber,
|
||||
uint64_t SizeInBits,
|
||||
@ -712,7 +713,7 @@ DIBasicType DIFactory::CreateBasicType(DIDescriptor Context,
|
||||
|
||||
/// CreateBasicType - Create a basic type like int, float, etc.
|
||||
DIBasicType DIFactory::CreateBasicTypeEx(DIDescriptor Context,
|
||||
const char * Name,
|
||||
StringRef Name,
|
||||
DICompileUnit CompileUnit,
|
||||
unsigned LineNumber,
|
||||
Constant *SizeInBits,
|
||||
@ -739,7 +740,7 @@ DIBasicType DIFactory::CreateBasicTypeEx(DIDescriptor Context,
|
||||
/// pointer, typedef, etc.
|
||||
DIDerivedType DIFactory::CreateDerivedType(unsigned Tag,
|
||||
DIDescriptor Context,
|
||||
const char * Name,
|
||||
StringRef Name,
|
||||
DICompileUnit CompileUnit,
|
||||
unsigned LineNumber,
|
||||
uint64_t SizeInBits,
|
||||
@ -767,7 +768,7 @@ DIDerivedType DIFactory::CreateDerivedType(unsigned Tag,
|
||||
/// pointer, typedef, etc.
|
||||
DIDerivedType DIFactory::CreateDerivedTypeEx(unsigned Tag,
|
||||
DIDescriptor Context,
|
||||
const char * Name,
|
||||
StringRef Name,
|
||||
DICompileUnit CompileUnit,
|
||||
unsigned LineNumber,
|
||||
Constant *SizeInBits,
|
||||
@ -794,7 +795,7 @@ DIDerivedType DIFactory::CreateDerivedTypeEx(unsigned Tag,
|
||||
/// CreateCompositeType - Create a composite type like array, struct, etc.
|
||||
DICompositeType DIFactory::CreateCompositeType(unsigned Tag,
|
||||
DIDescriptor Context,
|
||||
const char * Name,
|
||||
StringRef Name,
|
||||
DICompileUnit CompileUnit,
|
||||
unsigned LineNumber,
|
||||
uint64_t SizeInBits,
|
||||
@ -826,7 +827,7 @@ DICompositeType DIFactory::CreateCompositeType(unsigned Tag,
|
||||
/// CreateCompositeType - Create a composite type like array, struct, etc.
|
||||
DICompositeType DIFactory::CreateCompositeTypeEx(unsigned Tag,
|
||||
DIDescriptor Context,
|
||||
const char * Name,
|
||||
StringRef Name,
|
||||
DICompileUnit CompileUnit,
|
||||
unsigned LineNumber,
|
||||
Constant *SizeInBits,
|
||||
@ -859,9 +860,9 @@ DICompositeType DIFactory::CreateCompositeTypeEx(unsigned Tag,
|
||||
/// See comments in DISubprogram for descriptions of these fields. This
|
||||
/// method does not unique the generated descriptors.
|
||||
DISubprogram DIFactory::CreateSubprogram(DIDescriptor Context,
|
||||
const char * Name,
|
||||
const char * DisplayName,
|
||||
const char * LinkageName,
|
||||
StringRef Name,
|
||||
StringRef DisplayName,
|
||||
StringRef LinkageName,
|
||||
DICompileUnit CompileUnit,
|
||||
unsigned LineNo, DIType Type,
|
||||
bool isLocalToUnit,
|
||||
@ -885,9 +886,9 @@ DISubprogram DIFactory::CreateSubprogram(DIDescriptor Context,
|
||||
|
||||
/// CreateGlobalVariable - Create a new descriptor for the specified global.
|
||||
DIGlobalVariable
|
||||
DIFactory::CreateGlobalVariable(DIDescriptor Context, const char * Name,
|
||||
const char * DisplayName,
|
||||
const char * LinkageName,
|
||||
DIFactory::CreateGlobalVariable(DIDescriptor Context, StringRef Name,
|
||||
StringRef DisplayName,
|
||||
StringRef LinkageName,
|
||||
DICompileUnit CompileUnit,
|
||||
unsigned LineNo, DIType Type,bool isLocalToUnit,
|
||||
bool isDefinition, llvm::GlobalVariable *Val) {
|
||||
@ -919,7 +920,7 @@ DIFactory::CreateGlobalVariable(DIDescriptor Context, const char * Name,
|
||||
|
||||
/// CreateVariable - Create a new descriptor for the specified variable.
|
||||
DIVariable DIFactory::CreateVariable(unsigned Tag, DIDescriptor Context,
|
||||
const char * Name,
|
||||
StringRef Name,
|
||||
DICompileUnit CompileUnit, unsigned LineNo,
|
||||
DIType Type) {
|
||||
Value *Elts[] = {
|
||||
@ -1274,7 +1275,8 @@ bool getLocationInfo(const Value *V, std::string &DisplayName,
|
||||
if (!DIGV) return false;
|
||||
DIGlobalVariable Var(cast<MDNode>(DIGV));
|
||||
|
||||
if (const char *D = Var.getDisplayName())
|
||||
StringRef D = Var.getDisplayName();
|
||||
if (!D.empty())
|
||||
DisplayName = D;
|
||||
LineNo = Var.getLineNumber();
|
||||
Unit = Var.getCompileUnit();
|
||||
@ -1284,18 +1286,22 @@ bool getLocationInfo(const Value *V, std::string &DisplayName,
|
||||
if (!DDI) return false;
|
||||
DIVariable Var(cast<MDNode>(DDI->getVariable()));
|
||||
|
||||
if (const char *D = Var.getName())
|
||||
StringRef D = Var.getName();
|
||||
if (!D.empty())
|
||||
DisplayName = D;
|
||||
LineNo = Var.getLineNumber();
|
||||
Unit = Var.getCompileUnit();
|
||||
TypeD = Var.getType();
|
||||
}
|
||||
|
||||
if (const char *T = TypeD.getName())
|
||||
StringRef T = TypeD.getName();
|
||||
if (!T.empty())
|
||||
Type = T;
|
||||
if (const char *F = Unit.getFilename())
|
||||
StringRef F = Unit.getFilename();
|
||||
if (!F.empty())
|
||||
File = F;
|
||||
if (const char *D = Unit.getDirectory())
|
||||
StringRef D = Unit.getDirectory();
|
||||
if (!D.empty())
|
||||
Dir = D;
|
||||
return true;
|
||||
}
|
||||
|
@ -494,7 +494,7 @@ DIType DwarfDebug::getBlockByrefType(DIType Ty, std::string Name) {
|
||||
for (unsigned i = 0, N = Elements.getNumElements(); i < N; ++i) {
|
||||
DIDescriptor Element = Elements.getElement(i);
|
||||
DIDerivedType DT = DIDerivedType(Element.getNode());
|
||||
if (strcmp(Name.c_str(), DT.getName()) == 0)
|
||||
if (Name == DT.getName())
|
||||
return (DT.getTypeDerivedFrom());
|
||||
}
|
||||
|
||||
@ -620,7 +620,7 @@ void DwarfDebug::addBlockByrefAddress(DbgVariable *&DV, DIE *Die,
|
||||
unsigned Tag = Ty.getTag();
|
||||
bool isPointer = false;
|
||||
|
||||
const char *varName = VD.getName();
|
||||
StringRef varName = VD.getName();
|
||||
|
||||
if (Tag == dwarf::DW_TAG_pointer_type) {
|
||||
DIDerivedType DTy = DIDerivedType(Ty.getNode());
|
||||
@ -640,10 +640,10 @@ void DwarfDebug::addBlockByrefAddress(DbgVariable *&DV, DIE *Die,
|
||||
for (unsigned i = 0, N = Fields.getNumElements(); i < N; ++i) {
|
||||
DIDescriptor Element = Fields.getElement(i);
|
||||
DIDerivedType DT = DIDerivedType(Element.getNode());
|
||||
const char *fieldName = DT.getName();
|
||||
if (strcmp(fieldName, "__forwarding") == 0)
|
||||
StringRef fieldName = DT.getName();
|
||||
if (fieldName == "__forwarding")
|
||||
forwardingField = Element;
|
||||
else if (strcmp(fieldName, varName) == 0)
|
||||
else if (fieldName == varName)
|
||||
varField = Element;
|
||||
}
|
||||
|
||||
@ -785,13 +785,13 @@ void DwarfDebug::addType(CompileUnit *DW_Unit, DIE *Entity, DIType Ty) {
|
||||
void DwarfDebug::constructTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
|
||||
DIBasicType BTy) {
|
||||
// Get core information.
|
||||
const char *Name = BTy.getName();
|
||||
StringRef Name = BTy.getName();
|
||||
Buffer.setTag(dwarf::DW_TAG_base_type);
|
||||
addUInt(&Buffer, dwarf::DW_AT_encoding, dwarf::DW_FORM_data1,
|
||||
BTy.getEncoding());
|
||||
|
||||
// Add name if not anonymous or intermediate type.
|
||||
if (Name)
|
||||
if (!Name.empty())
|
||||
addString(&Buffer, dwarf::DW_AT_name, dwarf::DW_FORM_string, Name);
|
||||
uint64_t Size = BTy.getSizeInBits() >> 3;
|
||||
addUInt(&Buffer, dwarf::DW_AT_byte_size, 0, Size);
|
||||
@ -801,7 +801,7 @@ void DwarfDebug::constructTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
|
||||
void DwarfDebug::constructTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
|
||||
DIDerivedType DTy) {
|
||||
// Get core information.
|
||||
const char *Name = DTy.getName();
|
||||
StringRef Name = DTy.getName();
|
||||
uint64_t Size = DTy.getSizeInBits() >> 3;
|
||||
unsigned Tag = DTy.getTag();
|
||||
|
||||
@ -815,7 +815,7 @@ void DwarfDebug::constructTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
|
||||
addType(DW_Unit, &Buffer, FromTy);
|
||||
|
||||
// Add name if not anonymous or intermediate type.
|
||||
if (Name && Tag != dwarf::DW_TAG_pointer_type)
|
||||
if (!Name.empty() && Tag != dwarf::DW_TAG_pointer_type)
|
||||
addString(&Buffer, dwarf::DW_AT_name, dwarf::DW_FORM_string, Name);
|
||||
|
||||
// Add size if non-zero (derived types might be zero-sized.)
|
||||
@ -831,7 +831,7 @@ void DwarfDebug::constructTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
|
||||
void DwarfDebug::constructTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
|
||||
DICompositeType CTy) {
|
||||
// Get core information.
|
||||
const char *Name = CTy.getName();
|
||||
StringRef Name = CTy.getName();
|
||||
|
||||
uint64_t Size = CTy.getSizeInBits() >> 3;
|
||||
unsigned Tag = CTy.getTag();
|
||||
@ -913,7 +913,7 @@ void DwarfDebug::constructTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
|
||||
}
|
||||
|
||||
// Add name if not anonymous or intermediate type.
|
||||
if (Name)
|
||||
if (!Name.empty())
|
||||
addString(&Buffer, dwarf::DW_AT_name, dwarf::DW_FORM_string, Name);
|
||||
|
||||
if (Tag == dwarf::DW_TAG_enumeration_type ||
|
||||
@ -984,7 +984,7 @@ void DwarfDebug::constructArrayTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
|
||||
/// constructEnumTypeDIE - Construct enum type DIE from DIEnumerator.
|
||||
DIE *DwarfDebug::constructEnumTypeDIE(CompileUnit *DW_Unit, DIEnumerator *ETy) {
|
||||
DIE *Enumerator = new DIE(dwarf::DW_TAG_enumerator);
|
||||
const char *Name = ETy->getName();
|
||||
StringRef Name = ETy->getName();
|
||||
addString(Enumerator, dwarf::DW_AT_name, dwarf::DW_FORM_string, Name);
|
||||
int64_t Value = ETy->getEnumValue();
|
||||
addSInt(Enumerator, dwarf::DW_AT_const_value, dwarf::DW_FORM_sdata, Value);
|
||||
@ -997,20 +997,20 @@ DIE *DwarfDebug::createGlobalVariableDIE(CompileUnit *DW_Unit,
|
||||
// If the global variable was optmized out then no need to create debug info
|
||||
// entry.
|
||||
if (!GV.getGlobal()) return NULL;
|
||||
if (!GV.getDisplayName()) return NULL;
|
||||
if (GV.getDisplayName().empty()) return NULL;
|
||||
|
||||
DIE *GVDie = new DIE(dwarf::DW_TAG_variable);
|
||||
addString(GVDie, dwarf::DW_AT_name, dwarf::DW_FORM_string,
|
||||
GV.getDisplayName());
|
||||
|
||||
const char *LinkageName = GV.getLinkageName();
|
||||
if (LinkageName) {
|
||||
StringRef LinkageName = GV.getLinkageName();
|
||||
if (!LinkageName.empty()) {
|
||||
// Skip special LLVM prefix that is used to inform the asm printer to not
|
||||
// emit usual symbol prefix before the symbol name. This happens for
|
||||
// Objective-C symbol names and symbol whose name is replaced using GCC's
|
||||
// __asm__ attribute.
|
||||
if (LinkageName[0] == 1)
|
||||
LinkageName = &LinkageName[1];
|
||||
LinkageName = LinkageName.data() + 1;
|
||||
addString(GVDie, dwarf::DW_AT_MIPS_linkage_name, dwarf::DW_FORM_string,
|
||||
LinkageName);
|
||||
}
|
||||
@ -1032,9 +1032,10 @@ DIE *DwarfDebug::createGlobalVariableDIE(CompileUnit *DW_Unit,
|
||||
/// createMemberDIE - Create new member DIE.
|
||||
DIE *DwarfDebug::createMemberDIE(CompileUnit *DW_Unit, const DIDerivedType &DT){
|
||||
DIE *MemberDie = new DIE(DT.getTag());
|
||||
if (const char *Name = DT.getName())
|
||||
StringRef Name = DT.getName();
|
||||
if (!Name.empty())
|
||||
addString(MemberDie, dwarf::DW_AT_name, dwarf::DW_FORM_string, Name);
|
||||
|
||||
|
||||
addType(DW_Unit, MemberDie, DT.getTypeDerivedFrom());
|
||||
|
||||
addSourceLine(MemberDie, &DT);
|
||||
@ -1087,18 +1088,16 @@ DIE *DwarfDebug::createSubprogramDIE(CompileUnit *DW_Unit,
|
||||
bool IsConstructor,
|
||||
bool IsInlined) {
|
||||
DIE *SPDie = new DIE(dwarf::DW_TAG_subprogram);
|
||||
addString(SPDie, dwarf::DW_AT_name, dwarf::DW_FORM_string, SP.getName());
|
||||
|
||||
const char * Name = SP.getName();
|
||||
addString(SPDie, dwarf::DW_AT_name, dwarf::DW_FORM_string, Name);
|
||||
|
||||
const char *LinkageName = SP.getLinkageName();
|
||||
if (LinkageName) {
|
||||
StringRef LinkageName = SP.getLinkageName();
|
||||
if (!LinkageName.empty()) {
|
||||
// Skip special LLVM prefix that is used to inform the asm printer to not
|
||||
// emit usual symbol prefix before the symbol name. This happens for
|
||||
// Objective-C symbol names and symbol whose name is replaced using GCC's
|
||||
// __asm__ attribute.
|
||||
if (LinkageName[0] == 1)
|
||||
LinkageName = &LinkageName[1];
|
||||
LinkageName = LinkageName.data() + 1;
|
||||
addString(SPDie, dwarf::DW_AT_MIPS_linkage_name, dwarf::DW_FORM_string,
|
||||
LinkageName);
|
||||
}
|
||||
@ -1155,8 +1154,8 @@ CompileUnit &DwarfDebug::findCompileUnit(DICompileUnit Unit) const {
|
||||
DIE *DwarfDebug::createDbgScopeVariable(DbgVariable *DV, CompileUnit *Unit) {
|
||||
// Get the descriptor.
|
||||
const DIVariable &VD = DV->getVariable();
|
||||
const char *Name = VD.getName();
|
||||
if (!Name)
|
||||
StringRef Name = VD.getName();
|
||||
if (Name.empty())
|
||||
return NULL;
|
||||
|
||||
// Translate tag to proper Dwarf tag. The result variable is dropped for
|
||||
@ -1406,8 +1405,8 @@ DIE *DwarfDebug::constructVariableDIE(DbgVariable *DV,
|
||||
DbgScope *Scope, CompileUnit *Unit) {
|
||||
// Get the descriptor.
|
||||
const DIVariable &VD = DV->getVariable();
|
||||
const char *Name = VD.getName();
|
||||
if (!Name)
|
||||
StringRef Name = VD.getName();
|
||||
if (Name.empty())
|
||||
return NULL;
|
||||
|
||||
// Translate tag to proper Dwarf tag. The result variable is dropped for
|
||||
@ -1491,7 +1490,7 @@ void DwarfDebug::addPubTypes(DISubprogram SP) {
|
||||
if (ATy.isNull())
|
||||
continue;
|
||||
DICompositeType CATy = getDICompositeType(ATy);
|
||||
if (!CATy.isNull() && CATy.getName()) {
|
||||
if (!CATy.isNull() && !CATy.getName().empty()) {
|
||||
if (DIEEntry *Entry = ModuleCU->getDIEEntry(CATy.getNode()))
|
||||
ModuleCU->addGlobalType(CATy.getName(), Entry->getEntry());
|
||||
}
|
||||
@ -1547,8 +1546,7 @@ DIE *DwarfDebug::constructScopeDIE(DbgScope *Scope) {
|
||||
/// source file names. If none currently exists, create a new id and insert it
|
||||
/// in the SourceIds map. This can update DirectoryNames and SourceFileNames
|
||||
/// maps as well.
|
||||
unsigned DwarfDebug::GetOrCreateSourceID(const char *DirName,
|
||||
const char *FileName) {
|
||||
unsigned DwarfDebug::GetOrCreateSourceID(StringRef DirName, StringRef FileName) {
|
||||
unsigned DId;
|
||||
StringMap<unsigned>::iterator DI = DirectoryIdMap.find(DirName);
|
||||
if (DI != DirectoryIdMap.end()) {
|
||||
@ -1583,8 +1581,8 @@ unsigned DwarfDebug::GetOrCreateSourceID(const char *DirName,
|
||||
|
||||
void DwarfDebug::constructCompileUnit(MDNode *N) {
|
||||
DICompileUnit DIUnit(N);
|
||||
const char *FN = DIUnit.getFilename();
|
||||
const char *Dir = DIUnit.getDirectory();
|
||||
StringRef FN = DIUnit.getFilename();
|
||||
StringRef Dir = DIUnit.getDirectory();
|
||||
unsigned ID = GetOrCreateSourceID(Dir, FN);
|
||||
|
||||
DIE *Die = new DIE(dwarf::DW_TAG_compile_unit);
|
||||
@ -1597,12 +1595,13 @@ void DwarfDebug::constructCompileUnit(MDNode *N) {
|
||||
DIUnit.getLanguage());
|
||||
addString(Die, dwarf::DW_AT_name, dwarf::DW_FORM_string, FN);
|
||||
|
||||
if (Dir)
|
||||
if (!Dir.empty())
|
||||
addString(Die, dwarf::DW_AT_comp_dir, dwarf::DW_FORM_string, Dir);
|
||||
if (DIUnit.isOptimized())
|
||||
addUInt(Die, dwarf::DW_AT_APPLE_optimized, dwarf::DW_FORM_flag, 1);
|
||||
|
||||
if (const char *Flags = DIUnit.getFlags())
|
||||
StringRef Flags = DIUnit.getFlags();
|
||||
if (!Flags.empty())
|
||||
addString(Die, dwarf::DW_AT_APPLE_flags, dwarf::DW_FORM_string, Flags);
|
||||
|
||||
unsigned RVer = DIUnit.getRunTimeVersion();
|
||||
@ -1644,7 +1643,7 @@ void DwarfDebug::constructGlobalVariableDIE(MDNode *N) {
|
||||
ModuleCU->addGlobal(DI_GV.getName(), VariableDie);
|
||||
|
||||
DIType GTy = DI_GV.getType();
|
||||
if (GTy.isCompositeType() && GTy.getName()) {
|
||||
if (GTy.isCompositeType() && !GTy.getName().empty()) {
|
||||
DIEEntry *Entry = ModuleCU->getDIEEntry(GTy.getNode());
|
||||
assert (Entry && "Missing global type!");
|
||||
ModuleCU->addGlobalType(GTy.getName(), Entry->getEntry());
|
||||
@ -2119,8 +2118,8 @@ unsigned DwarfDebug::recordSourceLine(unsigned Line, unsigned Col,
|
||||
if (TimePassesIsEnabled)
|
||||
DebugTimer->startTimer();
|
||||
|
||||
const char *Dir = NULL;
|
||||
const char *Fn = NULL;
|
||||
StringRef Dir;
|
||||
StringRef Fn;
|
||||
|
||||
DIDescriptor Scope(S);
|
||||
if (Scope.isCompileUnit()) {
|
||||
@ -2889,10 +2888,10 @@ void DwarfDebug::emitDebugInlineInfo() {
|
||||
= InlineInfo.find(Node);
|
||||
SmallVector<InlineInfoLabels, 4> &Labels = II->second;
|
||||
DISubprogram SP(Node);
|
||||
const char *LName = SP.getLinkageName();
|
||||
const char *Name = SP.getName();
|
||||
StringRef LName = SP.getLinkageName();
|
||||
StringRef Name = SP.getName();
|
||||
|
||||
if (!LName)
|
||||
if (LName.empty())
|
||||
Asm->EmitString(Name);
|
||||
else {
|
||||
// Skip special LLVM prefix that is used to inform the asm printer to not
|
||||
@ -2900,7 +2899,7 @@ void DwarfDebug::emitDebugInlineInfo() {
|
||||
// Objective-C symbol names and symbol whose name is replaced using GCC's
|
||||
// __asm__ attribute.
|
||||
if (LName[0] == 1)
|
||||
LName = &LName[1];
|
||||
LName = LName.data() + 1;
|
||||
// Asm->EmitString(LName);
|
||||
EmitSectionOffset("string", "section_str",
|
||||
StringPool.idFor(LName), false, true);
|
||||
|
@ -486,8 +486,7 @@ class DwarfDebug : public Dwarf {
|
||||
/// source file names. If none currently exists, create a new id and insert it
|
||||
/// in the SourceIds map. This can update DirectoryNames and SourceFileNames maps
|
||||
/// as well.
|
||||
unsigned GetOrCreateSourceID(const char *DirName,
|
||||
const char *FileName);
|
||||
unsigned GetOrCreateSourceID(StringRef DirName, StringRef FileName);
|
||||
|
||||
void constructCompileUnit(MDNode *N);
|
||||
|
||||
|
@ -306,10 +306,10 @@ void PIC16DbgInfo::EmitCompositeTypeElements (DICompositeType CTy,
|
||||
int ElementAux[PIC16Dbg::AuxSize] = { 0 };
|
||||
std::string TagName = "";
|
||||
DIDerivedType DITy(Element.getNode());
|
||||
const char *ElementName = DITy.getName();
|
||||
StringRef ElementName = DITy.getName();
|
||||
unsigned short ElementSize = DITy.getSizeInBits()/8;
|
||||
// Get mangleddd name for this structure/union element.
|
||||
std::string MangMemName = ElementName + SuffixNo;
|
||||
std::string MangMemName = ElementName.data() + SuffixNo;
|
||||
PopulateDebugInfo(DITy, TypeNo, HasAux, ElementAux, TagName);
|
||||
short Class = 0;
|
||||
if( CTy.getTag() == dwarf::DW_TAG_union_type)
|
||||
@ -337,12 +337,12 @@ void PIC16DbgInfo::EmitCompositeTypeDecls(Module &M) {
|
||||
continue;
|
||||
if (CTy.getTag() == dwarf::DW_TAG_union_type ||
|
||||
CTy.getTag() == dwarf::DW_TAG_structure_type ) {
|
||||
const char *Name = CTy.getName();
|
||||
StringRef Name = CTy.getName();
|
||||
// Get the number after llvm.dbg.composite and make UniqueSuffix from
|
||||
// it.
|
||||
std::string DIVar = CTy.getNode()->getNameStr();
|
||||
std::string UniqueSuffix = "." + DIVar.substr(18);
|
||||
std::string MangledCTyName = Name + UniqueSuffix;
|
||||
std::string MangledCTyName = Name.data() + UniqueSuffix;
|
||||
unsigned short size = CTy.getSizeInBits()/8;
|
||||
int Aux[PIC16Dbg::AuxSize] = {0};
|
||||
// 7th and 8th byte represent size of structure/union.
|
||||
|
Loading…
x
Reference in New Issue
Block a user