mcize uses of PrintRelDirective and eliminate it.
authorChris Lattner <sabre@nondot.org>
Wed, 10 Mar 2010 00:09:21 +0000 (00:09 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 10 Mar 2010 00:09:21 +0000 (00:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98107 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter/DwarfException.cpp
lib/CodeGen/AsmPrinter/DwarfPrinter.cpp
lib/CodeGen/AsmPrinter/DwarfPrinter.h

index 99e12e2e3e6266b28b2cf4934bc8e258e33ff5a7..4f445343555eb9541a44f912627a4a7b0c89c045 100644 (file)
@@ -886,13 +886,11 @@ void DwarfException::EmitExceptionTable() {
          I = TypeInfos.rbegin(), E = TypeInfos.rend(); I != E; ++I) {
     const GlobalVariable *GV = *I;
 
-    if (GV) {
-      Asm->OutStreamer.AddComment("TypeInfo");
+    Asm->OutStreamer.AddComment("TypeInfo");
+    if (GV)
       EmitReference(GV, TTypeEncoding);
-    } else {
-      PrintRelDirective(TTypeEncoding);
-      O << "0x0\n";
-    }
+    else
+      Asm->OutStreamer.EmitIntValue(0, SizeOfEncodedValue(TTypeEncoding), 0);
   }
 
   // Emit the Exception Specifications.
index 86a1ead71d0feae1b69525792231ac9dfdd97500..d69b53051ede4cdfab2d827700130b9dc9ad978c 100644 (file)
@@ -77,14 +77,6 @@ unsigned DwarfPrinter::SizeOfEncodedValue(unsigned Encoding) const {
   return 0;
 }
 
-void DwarfPrinter::PrintRelDirective(unsigned Encoding) const {
-  unsigned Size = SizeOfEncodedValue(Encoding);
-  assert((Size == 4 || Size == 8) && "Do not support other types or rels!");
-
-  O << (Size == 4 ?
-        MAI->getData32bitsDirective() : MAI->getData64bitsDirective());
-}
-
 static const char *DecodeDWARFEncoding(unsigned Encoding) {
   switch (Encoding) {
   case dwarf::DW_EH_PE_absptr: return "absptr";
@@ -215,16 +207,16 @@ void DwarfPrinter::EmitReference(const MCSymbol *Sym, bool IsPCRelative,
 void DwarfPrinter::EmitReference(const MCSymbol *Sym, unsigned Encoding) const {
   const TargetLoweringObjectFile &TLOF = Asm->getObjFileLowering();
 
-  PrintRelDirective(Encoding);
-  O << *TLOF.getSymbolForDwarfReference(Sym, Asm->MMI, Encoding);
+  const MCExpr *Exp = TLOF.getSymbolForDwarfReference(Sym, Asm->MMI, Encoding);
+  Asm->OutStreamer.EmitValue(Exp, SizeOfEncodedValue(Encoding), /*addrspace*/0);
 }
 
 void DwarfPrinter::EmitReference(const GlobalValue *GV, unsigned Encoding)const{
   const TargetLoweringObjectFile &TLOF = Asm->getObjFileLowering();
 
-  PrintRelDirective(Encoding);
-  O << *TLOF.getSymbolForDwarfGlobalReference(GV, Asm->Mang,
-                                              Asm->MMI, Encoding);
+  const MCExpr *Exp =
+    TLOF.getSymbolForDwarfGlobalReference(GV, Asm->Mang, Asm->MMI, Encoding);
+  Asm->OutStreamer.EmitValue(Exp, SizeOfEncodedValue(Encoding), /*addrspace*/0);
 }
 
 /// EmitDifference - Emit the difference between two labels.  If this assembler
index 0fe45e4cc302ea3bd7a844c643890a7a0106e777..7a2eb401839bf4073a80d7dee07126d79df3108c 100644 (file)
@@ -88,8 +88,6 @@ public:
   /// SizeOfEncodedValue - Return the size of the encoding in bytes.
   unsigned SizeOfEncodedValue(unsigned Encoding) const;
 
-  void PrintRelDirective(unsigned Encoding) const;
-
   /// EmitEncodingByte - Emit a .byte 42 directive that corresponds to an
   /// encoding.  If verbose assembly output is enabled, we output comments
   /// describing the encoding.  Desc is a string saying what the encoding is