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 | b847bf547ba525a615dd077a47827f95d39ab5eb (patch) | |
tree | de2585c019463865ffcb2dc2547ec96f9171fa55 /llvm/lib/CodeGen/AsmPrinter | |
parent | 2e939f7c3c4bac437a357d2fc7ce4849553c7402 (diff) | |
download | bcm5719-llvm-b847bf547ba525a615dd077a47827f95d39ab5eb.tar.gz bcm5719-llvm-b847bf547ba525a615dd077a47827f95d39ab5eb.zip |
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.
llvm-svn: 127540
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp index 68e80e3983a..98a1bf2f1ce 100644 --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp +++ b/llvm/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); } |