Debug Info: code clean up.
authorManman Ren <manman.ren@gmail.com>
Tue, 29 Oct 2013 23:14:15 +0000 (23:14 +0000)
committerManman Ren <manman.ren@gmail.com>
Tue, 29 Oct 2013 23:14:15 +0000 (23:14 +0000)
Use EmitLabelOffsetDifference for handling on darwin platform when
non-darwin platforms use EmitLabelPlusOffset.

Also fix a bug in EmitLabelOffsetDifference where the size is hard-coded
to 4 even though Size is passed in as an argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193660 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/CodeGen/AsmPrinter/DwarfDebug.cpp

index 37df93693ea5f896c0fda104a43cb38b12bf7db7..41d83beb5f2f67ae5f0d66c6f331905d97232b62 100644 (file)
@@ -1423,12 +1423,12 @@ void AsmPrinter::EmitLabelOffsetDifference(const MCSymbol *Hi, uint64_t Offset,
                             OutContext);
 
   if (!MAI->hasSetDirective())
-    OutStreamer.EmitValue(Diff, 4);
+    OutStreamer.EmitValue(Diff, Size);
   else {
     // Otherwise, emit with .set (aka assignment).
     MCSymbol *SetLabel = GetTempSymbol("set", SetCounter++);
     OutStreamer.EmitAssignment(SetLabel, Diff);
-    OutStreamer.EmitSymbolValue(SetLabel, 4);
+    OutStreamer.EmitSymbolValue(SetLabel, Size);
   }
 }
 
index 722dd32d7edce0d75d6e8ab6c3a2fae5184c39e2..6713df8bc41a262b23bd304ab953009d6fe45f4c 100644 (file)
@@ -2082,7 +2082,9 @@ void DwarfDebug::emitDIE(DIE *Die, std::vector<DIEAbbrev *> *Abbrevs) {
           Asm->EmitLabelPlusOffset(DwarfInfoSectionSym, Addr,
                                    DIEEntry::getRefAddrSize(Asm));
         else
-          Asm->OutStreamer.EmitIntValue(Addr, DIEEntry::getRefAddrSize(Asm));
+          Asm->EmitLabelOffsetDifference(DwarfInfoSectionSym, Addr,
+                                         DwarfInfoSectionSym,
+                                         DIEEntry::getRefAddrSize(Asm));
       } else {
         Asm->EmitInt32(Addr);
       }