diff options
author | Duncan Sands <baldrick@free.fr> | 2011-03-12 13:07:37 +0000 |
---|---|---|
committer | Duncan Sands <baldrick@free.fr> | 2011-03-12 13:07:37 +0000 |
commit | ba9934648f1b8f5b1749548963f385f1147c1f68 (patch) | |
tree | 2dcd6708c44b08706b4918ee20dff189d03d85bd /lib/CodeGen/AsmPrinter | |
parent | c5c03f90240e1d2bf9f1579ae14b5dc8f0547c33 (diff) | |
download | external_llvm-ba9934648f1b8f5b1749548963f385f1147c1f68.zip external_llvm-ba9934648f1b8f5b1749548963f385f1147c1f68.tar.gz external_llvm-ba9934648f1b8f5b1749548963f385f1147c1f68.tar.bz2 |
Speculatively revert commit 127478 (jsjodin) in an attempt to fix the
llvm-gcc-i386-linux-selfhost and llvm-x86_64-linux-checks buildbots.
The original log entry:
Remove optimization emitting a reference insted of label difference, since
it can create more relocations. Removed isBaseAddressKnownZero method,
because it is no longer used.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127540 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/AsmPrinter')
-rw-r--r-- | lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp b/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp index 68e80e3..98a1bf2 100644 --- a/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp +++ b/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp @@ -191,6 +191,13 @@ void AsmPrinter::EmitSectionOffset(const MCSymbol *Label, assert((!Label->isInSection() || &Label->getSection() == &Section) && "Section offset using wrong section base for label"); + // If the section in question will end up with an address of 0 anyway, we can + // just emit an absolute reference to save a relocation. + if (Section.isBaseAddressKnownZero()) { + OutStreamer.EmitSymbolValue(Label, 4, 0/*AddrSpace*/); + return; + } + // Otherwise, emit it as a label difference from the start of the section. EmitLabelDifference(Label, SectionLabel, 4); } |