diff options
| author | Devang Patel <dpatel@apple.com> | 2009-11-25 17:36:49 +0000 | 
|---|---|---|
| committer | Devang Patel <dpatel@apple.com> | 2009-11-25 17:36:49 +0000 | 
| commit | 2d9caf9fe5071aefa0a1720f6612a1b9fc9c794c (patch) | |
| tree | 4f2674b09d908fbac4e64ba2d7a5064f69c7113f /llvm | |
| parent | 120f729ecafcaaacbea610655cd80fdd92d78bd7 (diff) | |
| download | bcm5719-llvm-2d9caf9fe5071aefa0a1720f6612a1b9fc9c794c.tar.gz bcm5719-llvm-2d9caf9fe5071aefa0a1720f6612a1b9fc9c794c.zip  | |
Use StringRef (again) in DebugInfo interface.
llvm-svn: 89866
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/include/llvm/Analysis/DebugInfo.h | 82 | ||||
| -rw-r--r-- | llvm/lib/Analysis/DebugInfo.cpp | 96 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 83 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h | 3 | ||||
| -rw-r--r-- | llvm/lib/Target/PIC16/PIC16DebugInfo.cpp | 8 | 
5 files changed, 138 insertions, 134 deletions
diff --git a/llvm/include/llvm/Analysis/DebugInfo.h b/llvm/include/llvm/Analysis/DebugInfo.h index 89376ed7293..866ed8a8757 100644 --- a/llvm/include/llvm/Analysis/DebugInfo.h +++ b/llvm/include/llvm/Analysis/DebugInfo.h @@ -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); diff --git a/llvm/lib/Analysis/DebugInfo.cpp b/llvm/lib/Analysis/DebugInfo.cpp index 5311f99e01c..41d803c699d 100644 --- a/llvm/lib/Analysis/DebugInfo.cpp +++ b/llvm/lib/Analysis/DebugInfo.cpp @@ -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;    } diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index f8873a4d941..ab9d96f25f0 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -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); diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h index 19583b84c5f..679d9b9d1a0 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -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); diff --git a/llvm/lib/Target/PIC16/PIC16DebugInfo.cpp b/llvm/lib/Target/PIC16/PIC16DebugInfo.cpp index 0ed44d21fc4..74dcf60ca7c 100644 --- a/llvm/lib/Target/PIC16/PIC16DebugInfo.cpp +++ b/llvm/lib/Target/PIC16/PIC16DebugInfo.cpp @@ -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.  | 

