[llvm-commits] [llvm] r93647 - in /llvm/trunk/lib/CodeGen/AsmPrinter: DIE.cpp DIE.h DwarfDebug.cpp DwarfDebug.h DwarfPrinter.cpp DwarfPrinter.h

Chris Lattner sabre at nondot.org
Sat Jan 16 10:50:29 PST 2010


Author: lattner
Date: Sat Jan 16 12:50:28 2010
New Revision: 93647

URL: http://llvm.org/viewvc/llvm-project?rev=93647&view=rev
Log:
Change DIEObjectLabel to take an MCSymbol instead of std::string.

Modified:
    llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp
    llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfPrinter.cpp
    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfPrinter.h

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp?rev=93647&r1=93646&r2=93647&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DIE.cpp Sat Jan 16 12:50:28 2010
@@ -15,6 +15,7 @@
 #include "DwarfPrinter.h"
 #include "llvm/CodeGen/AsmPrinter.h"
 #include "llvm/MC/MCAsmInfo.h"
+#include "llvm/MC/MCSymbol.h"
 #include "llvm/Target/TargetData.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/ErrorHandling.h"
@@ -276,7 +277,7 @@
 ///
 void DIEObjectLabel::EmitValue(Dwarf *D, unsigned Form) const {
   bool IsSmall = Form == dwarf::DW_FORM_data4;
-  D->EmitReference(Label, false, IsSmall);
+  D->EmitReference(Sym, false, IsSmall);
 }
 
 /// SizeOf - Determine size of label value in bytes.
@@ -288,7 +289,7 @@
 
 #ifndef NDEBUG
 void DIEObjectLabel::print(raw_ostream &O) {
-  O << "Obj: " << Label;
+  O << "Obj: " << Sym->getName();
 }
 #endif
 

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h?rev=93647&r1=93646&r2=93647&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DIE.h Sat Jan 16 12:50:28 2010
@@ -25,6 +25,7 @@
   class AsmPrinter;
   class Dwarf;
   class TargetData;
+  class MCSymbol;
 
   //===--------------------------------------------------------------------===//
   /// DIEAbbrevData - Dwarf abbreviation data, describes the one attribute of a
@@ -333,10 +334,10 @@
   /// DIEObjectLabel - A label to an object in code or data.
   //
   class DIEObjectLabel : public DIEValue {
-    const std::string Label;
+    const MCSymbol *Sym;
   public:
-    explicit DIEObjectLabel(const std::string &L)
-      : DIEValue(isAsIsLabel), Label(L) {}
+    explicit DIEObjectLabel(const MCSymbol *S)
+      : DIEValue(isAsIsLabel), Sym(S) {}
 
     /// EmitValue - Emit label value.
     ///

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=93647&r1=93646&r2=93647&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Sat Jan 16 12:50:28 2010
@@ -361,8 +361,8 @@
 /// addObjectLabel - Add an non-Dwarf label attribute data and value.
 ///
 void DwarfDebug::addObjectLabel(DIE *Die, unsigned Attribute, unsigned Form,
-                                const std::string &Label) {
-  DIEValue *Value = new DIEObjectLabel(Label);
+                                const MCSymbol *Sym) {
+  DIEValue *Value = new DIEObjectLabel(Sym);
   DIEValues.push_back(Value);
   Die->addValue(Attribute, Form, Value);
 }
@@ -1665,14 +1665,14 @@
     DIEBlock *Block = new DIEBlock();
     addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_addr);
     addObjectLabel(Block, 0, dwarf::DW_FORM_udata,
-                   Asm->Mang->getMangledName(DI_GV.getGlobal()));
+                   Asm->GetGlobalValueSymbol(DI_GV.getGlobal()));
     addBlock(VariableSpecDIE, dwarf::DW_AT_location, 0, Block);
     ModuleCU->addDie(VariableSpecDIE);
   } else {
     DIEBlock *Block = new DIEBlock();
     addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_addr);
     addObjectLabel(Block, 0, dwarf::DW_FORM_udata,
-                   Asm->Mang->getMangledName(DI_GV.getGlobal()));
+                   Asm->GetGlobalValueSymbol(DI_GV.getGlobal()));
     addBlock(VariableDie, dwarf::DW_AT_location, 0, Block);
   }
   addToContextOwner(VariableDie, GVContext);

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h?rev=93647&r1=93646&r2=93647&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.h Sat Jan 16 12:50:28 2010
@@ -256,7 +256,7 @@
   /// addObjectLabel - Add an non-Dwarf label attribute data and value.
   ///
   void addObjectLabel(DIE *Die, unsigned Attribute, unsigned Form,
-                      const std::string &Label);
+                      const MCSymbol *Sym);
 
   /// addSectionOffset - Add a section offset label attribute data and value.
   ///

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfPrinter.cpp?rev=93647&r1=93646&r2=93647&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfPrinter.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfPrinter.cpp Sat Jan 16 12:50:28 2010
@@ -18,6 +18,7 @@
 #include "llvm/CodeGen/MachineFunction.h"
 #include "llvm/CodeGen/MachineModuleInfo.h"
 #include "llvm/MC/MCAsmInfo.h"
+#include "llvm/MC/MCSymbol.h"
 #include "llvm/Target/TargetData.h"
 #include "llvm/Target/TargetFrameInfo.h"
 #include "llvm/Target/TargetRegisterInfo.h"
@@ -76,6 +77,13 @@
   if (IsPCRelative) O << "-" << MAI->getPCSymbol();
 }
 
+void Dwarf::EmitReference(const MCSymbol *Sym, bool IsPCRelative,
+                          bool Force32Bit) const {
+  PrintRelDirective(Force32Bit);
+  Sym->print(O, MAI);
+  if (IsPCRelative) O << "-" << MAI->getPCSymbol();
+}
+
 /// EmitDifference - Emit the difference between two labels.  Some assemblers do
 /// not behave with absolute expressions with data directives, so there is an
 /// option (needsSet) to use an intermediary set expression.

Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfPrinter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfPrinter.h?rev=93647&r1=93646&r2=93647&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfPrinter.h (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfPrinter.h Sat Jan 16 12:50:28 2010
@@ -28,6 +28,7 @@
   class MCAsmInfo;
   class TargetData;
   class TargetRegisterInfo;
+  class MCSymbol;
 
   class Dwarf {
   protected:
@@ -123,6 +124,8 @@
                        bool Force32Bit = false) const;
     void EmitReference(const std::string &Name, bool IsPCRelative = false,
                        bool Force32Bit = false) const;
+    void EmitReference(const MCSymbol *Sym, bool IsPCRelative = false,
+                       bool Force32Bit = false) const;
 
     /// EmitDifference - Emit the difference between two labels.  Some
     /// assemblers do not behave with absolute expressions with data directives,





More information about the llvm-commits mailing list