summaryrefslogtreecommitdiff
path: root/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/CodeGen/AsmPrinter/DwarfWriter.cpp')
-rw-r--r--lib/CodeGen/AsmPrinter/DwarfWriter.cpp65
1 files changed, 25 insertions, 40 deletions
diff --git a/lib/CodeGen/AsmPrinter/DwarfWriter.cpp b/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
index 4120d9f917..7190b9269b 100644
--- a/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
+++ b/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
@@ -1619,14 +1619,12 @@ private:
/// ConstructTypeDIE - Construct basic type die from DIBasicType.
void ConstructTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
DIBasicType BTy) {
-
// Get core information.
- std::string Name;
- BTy.getName(Name);
+ const char *Name = BTy.getName();
Buffer.setTag(DW_TAG_base_type);
AddUInt(&Buffer, DW_AT_encoding, DW_FORM_data1, BTy.getEncoding());
// Add name if not anonymous or intermediate type.
- if (!Name.empty())
+ if (Name)
AddString(&Buffer, DW_AT_name, DW_FORM_string, Name);
uint64_t Size = BTy.getSizeInBits() >> 3;
AddUInt(&Buffer, DW_AT_byte_size, 0, Size);
@@ -1635,10 +1633,8 @@ private:
/// ConstructTypeDIE - Construct derived type die from DIDerivedType.
void ConstructTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
DIDerivedType DTy) {
-
// Get core information.
- std::string Name;
- DTy.getName(Name);
+ const char *Name = DTy.getName();
uint64_t Size = DTy.getSizeInBits() >> 3;
unsigned Tag = DTy.getTag();
@@ -1652,7 +1648,7 @@ private:
AddType(DW_Unit, &Buffer, FromTy);
// Add name if not anonymous or intermediate type.
- if (!Name.empty())
+ if (Name)
AddString(&Buffer, DW_AT_name, DW_FORM_string, Name);
// Add size if non-zero (derived types might be zero-sized.)
@@ -1669,8 +1665,7 @@ private:
void ConstructTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
DICompositeType CTy) {
// Get core information.
- std::string Name;
- CTy.getName(Name);
+ const char *Name = CTy.getName();
uint64_t Size = CTy.getSizeInBits() >> 3;
unsigned Tag = CTy.getTag();
@@ -1746,7 +1741,7 @@ private:
}
// Add name if not anonymous or intermediate type.
- if (!Name.empty())
+ if (Name)
AddString(&Buffer, DW_AT_name, DW_FORM_string, Name);
if (Tag == DW_TAG_enumeration_type || Tag == DW_TAG_structure_type
@@ -1811,8 +1806,7 @@ private:
DIE *ConstructEnumTypeDIE(CompileUnit *DW_Unit, DIEnumerator *ETy) {
DIE *Enumerator = new DIE(DW_TAG_enumerator);
- std::string Name;
- ETy->getName(Name);
+ const char *Name = ETy->getName();
AddString(Enumerator, DW_AT_name, DW_FORM_string, Name);
int64_t Value = ETy->getEnumValue();
AddSInt(Enumerator, DW_AT_const_value, DW_FORM_sdata, Value);
@@ -1823,12 +1817,10 @@ private:
DIE *CreateGlobalVariableDIE(CompileUnit *DW_Unit, const DIGlobalVariable &GV)
{
DIE *GVDie = new DIE(DW_TAG_variable);
- std::string Name;
- GV.getDisplayName(Name);
+ const char *Name = GV.getDisplayName();
AddString(GVDie, DW_AT_name, DW_FORM_string, Name);
- std::string LinkageName;
- GV.getLinkageName(LinkageName);
- if (!LinkageName.empty())
+ const char *LinkageName = GV.getLinkageName();
+ if (LinkageName)
AddString(GVDie, DW_AT_MIPS_linkage_name, DW_FORM_string, LinkageName);
AddType(DW_Unit, GVDie, GV.getType());
if (!GV.isLocalToUnit())
@@ -1840,9 +1832,8 @@ private:
/// CreateMemberDIE - Create new member DIE.
DIE *CreateMemberDIE(CompileUnit *DW_Unit, const DIDerivedType &DT) {
DIE *MemberDie = new DIE(DT.getTag());
- std::string Name;
- DT.getName(Name);
- if (!Name.empty())
+ const char *Name = DT.getName();
+ if (Name)
AddString(MemberDie, DW_AT_name, DW_FORM_string, Name);
AddType(DW_Unit, MemberDie, DT.getTypeDerivedFrom());
@@ -1885,12 +1876,10 @@ private:
const DISubprogram &SP,
bool IsConstructor = false) {
DIE *SPDie = new DIE(DW_TAG_subprogram);
- std::string Name;
- SP.getName(Name);
+ const char *Name = SP.getName();
AddString(SPDie, DW_AT_name, DW_FORM_string, Name);
- std::string LinkageName;
- SP.getLinkageName(LinkageName);
- if (!LinkageName.empty())
+ const char *LinkageName = SP.getLinkageName();
+ if (LinkageName)
AddString(SPDie, DW_AT_MIPS_linkage_name, DW_FORM_string,
LinkageName);
AddSourceLine(SPDie, &SP);
@@ -1956,8 +1945,7 @@ private:
// Define variable debug information entry.
DIE *VariableDie = new DIE(Tag);
- std::string Name;
- VD.getName(Name);
+ const char *Name = VD.getName();
AddString(VariableDie, DW_AT_name, DW_FORM_string, Name);
// Add source line info if available.
@@ -2819,24 +2807,23 @@ private:
void ConstructCompileUnit(GlobalVariable *GV) {
DICompileUnit DIUnit(GV);
- std::string Dir, FN, Prod;
- unsigned ID = GetOrCreateSourceID(DIUnit.getDirectory(Dir),
- DIUnit.getFilename(FN));
+ const char *Dir = DIUnit.getDirectory();
+ const char *FN = DIUnit.getFilename();
+ unsigned ID = GetOrCreateSourceID(Dir, FN);
DIE *Die = new DIE(DW_TAG_compile_unit);
AddSectionOffset(Die, DW_AT_stmt_list, DW_FORM_data4,
DWLabel("section_line", 0), DWLabel("section_line", 0),
false);
- AddString(Die, DW_AT_producer, DW_FORM_string, DIUnit.getProducer(Prod));
+ AddString(Die, DW_AT_producer, DW_FORM_string, DIUnit.getProducer());
AddUInt(Die, DW_AT_language, DW_FORM_data1, DIUnit.getLanguage());
AddString(Die, DW_AT_name, DW_FORM_string, FN);
- if (!Dir.empty())
+ if (Dir)
AddString(Die, DW_AT_comp_dir, DW_FORM_string, Dir);
if (DIUnit.isOptimized())
AddUInt(Die, DW_AT_APPLE_optimized, DW_FORM_flag, 1);
- std::string Flags;
- DIUnit.getFlags(Flags);
- if (!Flags.empty())
+ const char *Flags = DIUnit.getFlags();
+ if (Flags)
AddString(Die, DW_AT_APPLE_flags, DW_FORM_string, Flags);
unsigned RVer = DIUnit.getRunTimeVersion();
if (RVer)
@@ -2895,8 +2882,7 @@ private:
// Add to context owner.
DW_Unit->getDie()->AddChild(VariableDie);
// Expose as global. FIXME - need to check external flag.
- std::string Name;
- DW_Unit->AddGlobal(DI_GV.getName(Name), VariableDie);
+ DW_Unit->AddGlobal(DI_GV.getName(), VariableDie);
return true;
}
@@ -2948,8 +2934,7 @@ private:
// Add to context owner.
Unit->getDie()->AddChild(SubprogramDie);
// Expose as global.
- std::string Name;
- Unit->AddGlobal(SP.getName(Name), SubprogramDie);
+ Unit->AddGlobal(SP.getName(), SubprogramDie);
return true;
}