[llvm-commits] [llvm] r66405 - in /llvm/branches/Apple/Dib: include/llvm/Analysis/DebugInfo.h lib/Analysis/DbgInfoPrinter.cpp lib/Analysis/DebugInfo.cpp lib/CodeGen/AsmPrinter/DwarfWriter.cpp lib/CodeGen/SelectionDAG/FastISel.cpp lib/CodeGen/SelectionDAG/LegalizeDAG.cpp lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp

Bill Wendling isanbard at gmail.com
Sun Mar 8 23:02:28 PDT 2009


Author: void
Date: Mon Mar  9 01:02:27 2009
New Revision: 66405

URL: http://llvm.org/viewvc/llvm-project?rev=66405&view=rev
Log:
Merge r 66396 into Dib:

Pass in a std::string when getting the names of debugging things. This cuts down
on the number of times a std::string is created and copied.

Modified:
    llvm/branches/Apple/Dib/include/llvm/Analysis/DebugInfo.h
    llvm/branches/Apple/Dib/lib/Analysis/DbgInfoPrinter.cpp
    llvm/branches/Apple/Dib/lib/Analysis/DebugInfo.cpp
    llvm/branches/Apple/Dib/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
    llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/FastISel.cpp
    llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
    llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
    llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp

Modified: llvm/branches/Apple/Dib/include/llvm/Analysis/DebugInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Dib/include/llvm/Analysis/DebugInfo.h?rev=66405&r1=66404&r2=66405&view=diff

==============================================================================
--- llvm/branches/Apple/Dib/include/llvm/Analysis/DebugInfo.h (original)
+++ llvm/branches/Apple/Dib/include/llvm/Analysis/DebugInfo.h Mon Mar  9 01:02:27 2009
@@ -40,7 +40,7 @@
     /// not, the debug info is corrupt and we ignore it.
     DIDescriptor(GlobalVariable *GV, unsigned RequiredTag);
 
-    std::string getStringField(unsigned Elt) const;
+    const std::string &getStringField(unsigned Elt, std::string &Result) const;
     unsigned getUnsignedField(unsigned Elt) const {
       return (unsigned)getUInt64Field(Elt);
     }
@@ -106,9 +106,15 @@
     explicit DICompileUnit(GlobalVariable *GV = 0);
 
     unsigned getLanguage() const     { return getUnsignedField(2); }
-    std::string getFilename() const  { return getStringField(3); }
-    std::string getDirectory() const { return getStringField(4); }
-    std::string getProducer() const  { return getStringField(5); }
+    const std::string &getFilename(std::string &F) const {
+      return getStringField(3, F);
+    }
+    const std::string &getDirectory(std::string &F) const {
+      return getStringField(4, F);
+    }
+    const std::string &getProducer(std::string &F) const {
+      return getStringField(5, F);
+    }
     
     /// isMain - Each input file is encoded as a separate compile unit in LLVM
     /// debugging information output. However, many target specific tool chains
@@ -121,7 +127,9 @@
 
     bool isMain() const                { return getUnsignedField(6); }
     bool isOptimized() const           { return getUnsignedField(7); }
-    std::string getFlags() const       { return getStringField(8); }
+    const std::string &getFlags(std::string &F) const {
+      return getStringField(8, F);
+    }
     unsigned getRunTimeVersion() const { return getUnsignedField(9); }
 
     /// Verify - Verify that a compile unit is well formed.
@@ -138,7 +146,9 @@
   public:
     explicit DIEnumerator(GlobalVariable *GV = 0);
 
-    std::string getName() const  { return getStringField(1); }
+    const std::string &getName(std::string &F) const {
+      return getStringField(1, F);
+    }
     uint64_t getEnumValue() const { return getUInt64Field(2); }
   };
 
@@ -182,7 +192,9 @@
     virtual ~DIType() {}
 
     DIDescriptor getContext() const     { return getDescriptorField(1); }
-    std::string getName() const         { return getStringField(2); }
+    const std::string &getName(std::string &F) const {
+      return getStringField(2, F);
+    }
     DICompileUnit getCompileUnit() const{ return getFieldAs<DICompileUnit>(3); }
     unsigned getLineNumber() const      { return getUnsignedField(4); }
     uint64_t getSizeInBits() const      { return getUInt64Field(5); }
@@ -264,9 +276,15 @@
     virtual ~DIGlobal() {}
 
     DIDescriptor getContext() const     { return getDescriptorField(2); }
-    std::string getName() const         { return getStringField(3); }
-    std::string getDisplayName() const  { return getStringField(4); }
-    std::string getLinkageName() const  { return getStringField(5); }
+    const std::string &getName(std::string &F) const {
+      return getStringField(3, F);
+    }
+    const std::string &getDisplayName(std::string &F) const {
+      return getStringField(4, F);
+    }
+    const std::string &getLinkageName(std::string &F) const {
+      return getStringField(5, F);
+    }
     DICompileUnit getCompileUnit() const{ return getFieldAs<DICompileUnit>(6); }
     unsigned getLineNumber() const      { return getUnsignedField(7); }
     DIType getType() const              { return getFieldAs<DIType>(8); }
@@ -313,7 +331,9 @@
     explicit DIVariable(GlobalVariable *GV = 0);
 
     DIDescriptor getContext() const { return getDescriptorField(1); }
-    std::string getName() const { return getStringField(2); }
+    const std::string &getName(std::string &F) const {
+      return getStringField(2, F);
+    }
     DICompileUnit getCompileUnit() const{ return getFieldAs<DICompileUnit>(3); }
     unsigned getLineNumber() const      { return getUnsignedField(4); }
     DIType getType() const              { return getFieldAs<DIType>(5); }

Modified: llvm/branches/Apple/Dib/lib/Analysis/DbgInfoPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Dib/lib/Analysis/DbgInfoPrinter.cpp?rev=66405&r1=66404&r2=66405&view=diff

==============================================================================
--- llvm/branches/Apple/Dib/lib/Analysis/DbgInfoPrinter.cpp (original)
+++ llvm/branches/Apple/Dib/lib/Analysis/DbgInfoPrinter.cpp Mon Mar  9 01:02:27 2009
@@ -59,8 +59,9 @@
 {
   if(const DbgDeclareInst* DDI = findDbgDeclare(V)) {
     DIVariable Var(cast<GlobalVariable>(DDI->getVariable()));
-    Out << "; variable " << Var.getName()
-      << " of type " << Var.getType().getName()
+    std::string Res1, Res2;
+    Out << "; variable " << Var.getName(Res1)
+      << " of type " << Var.getType().getName(Res2)
       << " at line " << Var.getLineNumber() << "\n";
   }
 }
@@ -83,8 +84,9 @@
 void PrintDbgInfo::printFuncStart(const DbgFuncStartInst *FS)
 {
   DISubprogram Subprogram(cast<GlobalVariable>(FS->getSubprogram()));
-  Out << ";fully qualified function name: " << Subprogram.getDisplayName()
-    << " return type: " << Subprogram.getType().getName()
+  std::string Res1, Res2;
+  Out << ";fully qualified function name: " << Subprogram.getDisplayName(Res1)
+    << " return type: " << Subprogram.getType().getName(Res2)
     << " at line " << Subprogram.getLineNumber()
     << "\n\n";
 }

Modified: llvm/branches/Apple/Dib/lib/Analysis/DebugInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Dib/lib/Analysis/DebugInfo.cpp?rev=66405&r1=66404&r2=66405&view=diff

==============================================================================
--- llvm/branches/Apple/Dib/lib/Analysis/DebugInfo.cpp (original)
+++ llvm/branches/Apple/Dib/lib/Analysis/DebugInfo.cpp Mon Mar  9 01:02:27 2009
@@ -35,17 +35,23 @@
     GV = 0;
 }
 
+const std::string &
+DIDescriptor::getStringField(unsigned Elt, std::string &Result) const {
+  if (GV == 0) {
+    Result.clear();
+    return Result;
+  }
 
-std::string DIDescriptor::getStringField(unsigned Elt) const {
-  if (GV == 0) return "";
   Constant *C = GV->getInitializer();
-  if (C == 0 || Elt >= C->getNumOperands())
-    return "";
+  if (C == 0 || Elt >= C->getNumOperands()) {
+    Result.clear();
+    return Result;
+  }
   
-  std::string Result;
   // Fills in the string if it succeeds
   if (!GetConstantStringInfo(C->getOperand(Elt), Result))
     Result.clear();
+
   return Result;
 }
 
@@ -59,7 +65,6 @@
   return 0;
 }
 
-
 DIDescriptor DIDescriptor::getDescriptorField(unsigned Elt) const {
   if (GV == 0) return DIDescriptor();
   Constant *C = GV->getInitializer();
@@ -185,7 +190,8 @@
 bool DICompileUnit::Verify() const {
   if (isNull()) 
     return false;
-  if (getFilename().empty()) 
+  std::string Res;
+  if (getFilename(Res).empty()) 
     return false;
   // It is possible that directory and produce string is empty.
   return true;
@@ -864,16 +870,22 @@
 void DICompileUnit::dump() const {
   if (getLanguage())
     cerr << " [" << dwarf::LanguageString(getLanguage()) << "] ";
-  cerr << " [" << getDirectory() << "/" << getFilename() << " ]";
+
+  std::string Res1, Res2;
+  cerr << " [" << getDirectory(Res1) << "/" << getFilename(Res2) << " ]";
 }
 
 /// dump - print type.
 void DIType::dump() const {
   if (isNull()) return;
-  if (!getName().empty())
-    cerr << " [" << getName() << "] ";
+
+  std::string Res;
+  if (!getName(Res).empty())
+    cerr << " [" << Res << "] ";
+
   unsigned Tag = getTag();
   cerr << " [" << dwarf::TagString(Tag) << "] ";
+
   // TODO : Print context
   getCompileUnit().dump();
   cerr << " [" 
@@ -882,10 +894,12 @@
        << getAlignInBits() << ", "
        << getOffsetInBits() 
        << "] ";
+
   if (isPrivate()) 
     cerr << " [private] ";
   else if (isProtected())
     cerr << " [protected] ";
+
   if (isForwardDecl())
     cerr << " [fwd] ";
 
@@ -899,6 +913,7 @@
     cerr << "Invalid DIType\n";
     return;
   }
+
   cerr << "\n";
 }
 
@@ -923,16 +938,20 @@
 
 /// dump - print global.
 void DIGlobal::dump() const {
+  std::string Res;
+  if (!getName(Res).empty())
+    cerr << " [" << Res << "] ";
 
-  if (!getName().empty())
-    cerr << " [" << getName() << "] ";
   unsigned Tag = getTag();
   cerr << " [" << dwarf::TagString(Tag) << "] ";
+
   // TODO : Print context
   getCompileUnit().dump();
   cerr << " [" << getLineNumber() << "] ";
+
   if (isLocalToUnit())
     cerr << " [local] ";
+
   if (isDefinition())
     cerr << " [def] ";
 
@@ -954,8 +973,10 @@
 
 /// dump - print variable.
 void DIVariable::dump() const {
-  if (!getName().empty())
-    cerr << " [" << getName() << "] ";
+  std::string Res;
+  if (!getName(Res).empty())
+    cerr << " [" << Res << "] ";
+
   getCompileUnit().dump();
   cerr << " [" << getLineNumber() << "] ";
   getType().dump();

Modified: llvm/branches/Apple/Dib/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Dib/lib/CodeGen/AsmPrinter/DwarfWriter.cpp?rev=66405&r1=66404&r2=66405&view=diff

==============================================================================
--- llvm/branches/Apple/Dib/lib/CodeGen/AsmPrinter/DwarfWriter.cpp (original)
+++ llvm/branches/Apple/Dib/lib/CodeGen/AsmPrinter/DwarfWriter.cpp Mon Mar  9 01:02:27 2009
@@ -1,4 +1,4 @@
-//===-- llvm/CodeGen/DwarfWriter.cpp - Dwarf Framework ----------*- C++ -*-===//
+//===-- llvm/CodeGen/DwarfWriter.cpp - Dwarf Framework --------------------===//
 //
 //                     The LLVM Compiler Infrastructure
 //
@@ -1661,7 +1661,8 @@
                         DIBasicType BTy) {
     
     // Get core information.
-    const std::string &Name = BTy.getName();
+    std::string Name;
+    BTy.getName(Name);
     Buffer.setTag(DW_TAG_base_type);
     AddUInt(&Buffer, DW_AT_encoding,  DW_FORM_data1, BTy.getEncoding());
     // Add name if not anonymous or intermediate type.
@@ -1676,13 +1677,16 @@
                         DIDerivedType DTy) {
 
     // Get core information.
-    const std::string &Name = DTy.getName();
+    std::string Name;
+    DTy.getName(Name);
     uint64_t Size = DTy.getSizeInBits() >> 3;
     unsigned Tag = DTy.getTag();
+
     // FIXME - Workaround for templates.
     if (Tag == DW_TAG_inheritance) Tag = DW_TAG_reference_type;
 
     Buffer.setTag(Tag);
+
     // Map to main type, void will not have a type.
     DIType FromTy = DTy.getTypeDerivedFrom();
     AddType(DW_Unit, &Buffer, FromTy);
@@ -1703,12 +1707,14 @@
   /// ConstructTypeDIE - Construct type DIE from DICompositeType.
   void ConstructTypeDIE(CompileUnit *DW_Unit, DIE &Buffer,
                         DICompositeType CTy) {
-
     // Get core information.
-    const std::string &Name = CTy.getName();
+    std::string Name;
+    CTy.getName(Name);
+
     uint64_t Size = CTy.getSizeInBits() >> 3;
     unsigned Tag = CTy.getTag();
     Buffer.setTag(Tag);
+
     switch (Tag) {
     case DW_TAG_vector_type:
     case DW_TAG_array_type:
@@ -1843,7 +1849,8 @@
   DIE *ConstructEnumTypeDIE(CompileUnit *DW_Unit, DIEnumerator *ETy) {
 
     DIE *Enumerator = new DIE(DW_TAG_enumerator);
-    AddString(Enumerator, DW_AT_name, DW_FORM_string, ETy->getName());
+    std::string Name;
+    AddString(Enumerator, DW_AT_name, DW_FORM_string, ETy->getName(Name));
     int64_t Value = ETy->getEnumValue();                             
     AddSInt(Enumerator, DW_AT_const_value, DW_FORM_sdata, Value);
     return Enumerator;
@@ -1853,9 +1860,11 @@
   DIE *CreateGlobalVariableDIE(CompileUnit *DW_Unit, const DIGlobalVariable &GV)
   {
     DIE *GVDie = new DIE(DW_TAG_variable);
-    const std::string &Name = GV.getDisplayName();
+    std::string Name;
+    GV.getDisplayName(Name);
     AddString(GVDie, DW_AT_name, DW_FORM_string, Name);
-    const std::string &LinkageName = GV.getLinkageName();
+    std::string LinkageName;
+    GV.getLinkageName(LinkageName);
     if (!LinkageName.empty())
       AddString(GVDie, DW_AT_MIPS_linkage_name, DW_FORM_string, LinkageName);
     AddType(DW_Unit, GVDie, GV.getType());
@@ -1868,7 +1877,8 @@
   /// CreateMemberDIE - Create new member DIE.
   DIE *CreateMemberDIE(CompileUnit *DW_Unit, const DIDerivedType &DT) {
     DIE *MemberDie = new DIE(DT.getTag());
-    std::string Name = DT.getName();
+    std::string Name;
+    DT.getName(Name);
     if (!Name.empty())
       AddString(MemberDie, DW_AT_name, DW_FORM_string, Name);
 
@@ -1912,8 +1922,10 @@
                            const  DISubprogram &SP,
                            bool IsConstructor = false) {
     DIE *SPDie = new DIE(DW_TAG_subprogram);
-    AddString(SPDie, DW_AT_name, DW_FORM_string, SP.getName());
-    const std::string &LinkageName = SP.getLinkageName();
+    std::string Name;
+    AddString(SPDie, DW_AT_name, DW_FORM_string, SP.getName(Name));
+    std::string LinkageName;
+    SP.getLinkageName(LinkageName);
     if (!LinkageName.empty())
       AddString(SPDie, DW_AT_MIPS_linkage_name, DW_FORM_string, 
                 LinkageName);
@@ -1976,7 +1988,8 @@
 
     // Define variable debug information entry.
     DIE *VariableDie = new DIE(Tag);
-    AddString(VariableDie, DW_AT_name, DW_FORM_string, VD.getName());
+    std::string Name;
+    AddString(VariableDie, DW_AT_name, DW_FORM_string, VD.getName(Name));
 
     // Add source line info if available.
     AddSourceLine(VariableDie, &VD);
@@ -2126,7 +2139,8 @@
            E = Result.end(); I != E; ++I) {
       DISubprogram SPD(*I);
 
-      if (SPD.getName() == MF->getFunction()->getName()) {
+      std::string Name;
+      if (SPD.getName(Name) == MF->getFunction()->getName()) {
         // Get the compile unit context.
         CompileUnit *Unit = MainCU;
         if (!Unit)
@@ -2798,21 +2812,24 @@
     for (std::vector<GlobalVariable *>::iterator RI = Result.begin(),
            RE = Result.end(); RI != RE; ++RI) {
       DICompileUnit DIUnit(*RI);
-      unsigned ID = RecordSource(DIUnit.getDirectory(),
-                                 DIUnit.getFilename());
+      std::string Dir, FN;
+      unsigned ID = RecordSource(DIUnit.getDirectory(Dir),
+                                 DIUnit.getFilename(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());
+      std::string Prod;
+      AddString(Die, DW_AT_producer, DW_FORM_string, DIUnit.getProducer(Prod));
       AddUInt(Die, DW_AT_language, DW_FORM_data1, DIUnit.getLanguage());
-      AddString(Die, DW_AT_name, DW_FORM_string, DIUnit.getFilename());
-      if (!DIUnit.getDirectory().empty())
-        AddString(Die, DW_AT_comp_dir, DW_FORM_string, DIUnit.getDirectory());
+      AddString(Die, DW_AT_name, DW_FORM_string, FN);
+      if (!Dir.empty())
+        AddString(Die, DW_AT_comp_dir, DW_FORM_string, Dir);
       if (DIUnit.isOptimized())
         AddUInt(Die, DW_AT_APPLE_optimized, DW_FORM_flag, 1);
-      const std::string &Flags = DIUnit.getFlags();
+      std::string Flags;
+      DIUnit.getFlags(Flags);
       if (!Flags.empty())
         AddString(Die, DW_AT_APPLE_flags, DW_FORM_string, Flags);
       unsigned RVer = DIUnit.getRunTimeVersion();
@@ -2861,7 +2878,8 @@
       //Add to context owner.
       DW_Unit->getDie()->AddChild(VariableDie);
       //Expose as global. FIXME - need to check external flag.
-      DW_Unit->AddGlobal(DI_GV.getName(), VariableDie);
+      std::string Name;
+      DW_Unit->AddGlobal(DI_GV.getName(Name), VariableDie);
      
       if (!result)
         result = true;
@@ -2900,7 +2918,8 @@
       //Add to context owner.
       Unit->getDie()->AddChild(SubprogramDie);
       //Expose as global.
-      Unit->AddGlobal(SP.getName(), SubprogramDie);
+      std::string Name;
+      Unit->AddGlobal(SP.getName(Name), SubprogramDie);
       
       if (!result)
         result = true;

Modified: llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/FastISel.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/FastISel.cpp?rev=66405&r1=66404&r2=66405&view=diff

==============================================================================
--- llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/FastISel.cpp (original)
+++ llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/FastISel.cpp Mon Mar  9 01:02:27 2009
@@ -319,8 +319,9 @@
     DbgStopPointInst *SPI = cast<DbgStopPointInst>(I);
     if (DW && DW->ValidDebugInfo(SPI->getContext())) {
       DICompileUnit CU(cast<GlobalVariable>(SPI->getContext()));
-      unsigned SrcFile = DW->RecordSource(CU.getDirectory(),
-                                          CU.getFilename());
+      std::string Dir, FN;
+      unsigned SrcFile = DW->RecordSource(CU.getDirectory(Dir),
+                                          CU.getFilename(FN));
       unsigned Line = SPI->getLine();
       unsigned Col = SPI->getColumn();
       unsigned ID = DW->RecordSourceLine(Line, Col, SrcFile);
@@ -361,8 +362,9 @@
       // (most?) gdb expects.
       DISubprogram Subprogram(cast<GlobalVariable>(SP));
       DICompileUnit CompileUnit = Subprogram.getCompileUnit();
-      unsigned SrcFile = DW->RecordSource(CompileUnit.getDirectory(),
-                                          CompileUnit.getFilename());
+      std::string Dir, FN;
+      unsigned SrcFile = DW->RecordSource(CompileUnit.getDirectory(Dir),
+                                          CompileUnit.getFilename(FN));
 
       // Record the source line but does not create a label for the normal
       // function start. It will be emitted at asm emission time. However,

Modified: llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=66405&r1=66404&r2=66405&view=diff

==============================================================================
--- llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original)
+++ llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Mon Mar  9 01:02:27 2009
@@ -1288,9 +1288,10 @@
       GlobalVariable *CU_GV = cast<GlobalVariable>(DSP->getCompileUnit());
       if (DW && (useDEBUG_LOC || useLABEL) && !CU_GV->isDeclaration()) {
         DICompileUnit CU(cast<GlobalVariable>(DSP->getCompileUnit()));
-        unsigned SrcFile = DW->RecordSource(CU.getDirectory(),
-                                            CU.getFilename());
-        
+        std::string Dir, FN;
+        unsigned SrcFile = DW->RecordSource(CU.getDirectory(Dir),
+                                            CU.getFilename(FN));
+
         unsigned Line = DSP->getLine();
         unsigned Col = DSP->getColumn();
 

Modified: llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp?rev=66405&r1=66404&r2=66405&view=diff

==============================================================================
--- llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp (original)
+++ llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp Mon Mar  9 01:02:27 2009
@@ -335,8 +335,9 @@
 
             if (DW && DW->ValidDebugInfo(SPI->getContext())) {
               DICompileUnit CU(cast<GlobalVariable>(SPI->getContext()));
-              unsigned SrcFile = DW->RecordSource(CU.getDirectory(),
-                                                  CU.getFilename());
+              std::string Dir, FN;
+              unsigned SrcFile = DW->RecordSource(CU.getDirectory(Dir),
+                                                  CU.getFilename(FN));
               unsigned idx = MF->getOrCreateDebugLocID(SrcFile,
                                                        SPI->getLine(), 
                                                        SPI->getColumn());
@@ -354,8 +355,9 @@
               if (DW->ValidDebugInfo(SP)) {
                 DISubprogram Subprogram(cast<GlobalVariable>(SP));
                 DICompileUnit CU(Subprogram.getCompileUnit());
-                unsigned SrcFile = DW->RecordSource(CU.getDirectory(),
-                                                    CU.getFilename());
+                std::string Dir, FN;
+                unsigned SrcFile = DW->RecordSource(CU.getDirectory(Dir),
+                                                    CU.getFilename(FN));
                 unsigned Line = Subprogram.getLineNumber();
                 DL = DebugLoc::get(MF->getOrCreateDebugLocID(SrcFile, Line, 0));
               }
@@ -3901,7 +3903,9 @@
                                       SPI.getColumn(),
                                       SPI.getContext()));
       DICompileUnit CU(cast<GlobalVariable>(SPI.getContext()));
-      unsigned SrcFile = DW->RecordSource(CU.getDirectory(), CU.getFilename());
+      std::string Dir, FN;
+      unsigned SrcFile = DW->RecordSource(CU.getDirectory(Dir),
+                                          CU.getFilename(FN));
       unsigned idx = DAG.getMachineFunction().
                          getOrCreateDebugLocID(SrcFile,
                                                SPI.getLine(), 
@@ -3946,8 +3950,9 @@
       // what (most?) gdb expects.
       DISubprogram Subprogram(cast<GlobalVariable>(SP));
       DICompileUnit CompileUnit = Subprogram.getCompileUnit();
-      unsigned SrcFile = DW->RecordSource(CompileUnit.getDirectory(),
-                                          CompileUnit.getFilename());
+      std::string Dir, FN;
+      unsigned SrcFile = DW->RecordSource(CompileUnit.getDirectory(Dir),
+                                          CompileUnit.getFilename(FN));
 
       // Record the source line but does not create a label for the normal
       // function start. It will be emitted at asm emission time. However,

Modified: llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp?rev=66405&r1=66404&r2=66405&view=diff

==============================================================================
--- llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp (original)
+++ llvm/branches/Apple/Dib/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp Mon Mar  9 01:02:27 2009
@@ -179,7 +179,8 @@
     }
   } else if (const DbgStopPointSDNode *D = dyn_cast<DbgStopPointSDNode>(Node)) {
     DICompileUnit CU(cast<GlobalVariable>(D->getCompileUnit()));
-    Op += ": " + CU.getFilename();
+    std::string FN;
+    Op += ": " + CU.getFilename(FN);
     Op += ":" + utostr(D->getLine());
     if (D->getColumn() != 0)
       Op += ":" + utostr(D->getColumn());





More information about the llvm-commits mailing list