Remove optimization emitting a reference insted of label difference, since it can...
authorJan Sjödin <jan_sjodin@yahoo.com>
Fri, 11 Mar 2011 19:37:02 +0000 (19:37 +0000)
committerJan Sjödin <jan_sjodin@yahoo.com>
Fri, 11 Mar 2011 19:37:02 +0000 (19:37 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127478 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/MC/MCSection.h
include/llvm/MC/MCSectionELF.h
lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp

index 1c01b2f8f3cc659aa455e80733d62ac7b7be3adf..b64a44cdd0a104b3e10b7cdf84e957a15a23c6d6 100644 (file)
@@ -52,14 +52,6 @@ namespace llvm {
     virtual void PrintSwitchToSection(const MCAsmInfo &MAI,
                                       raw_ostream &OS) const = 0;
 
-    /// isBaseAddressKnownZero - Return true if we know that this section will
-    /// get a base address of zero.  In cases where we know that this is true we
-    /// can emit section offsets as direct references to avoid a subtraction
-    /// from the base of the section, saving a relocation.
-    virtual bool isBaseAddressKnownZero() const {
-      return false;
-    }
-
     // UseCodeAlign - Return true if a .align directive should use
     // "optimized nops" to fill instead of 0s.
     virtual bool UseCodeAlign() const = 0;
index c82de71282028d7eeeb43c575e15b98726590cc9..26951725e497912ed173fbd4bd52cc0e7d32ba2b 100644 (file)
@@ -66,12 +66,6 @@ public:
   virtual bool UseCodeAlign() const;
   virtual bool isVirtualSection() const;
 
-  /// isBaseAddressKnownZero - We know that non-allocatable sections (like
-  /// debug info) have a base of zero.
-  virtual bool isBaseAddressKnownZero() const {
-    return (getFlags() & ELF::SHF_ALLOC) == 0;
-  }
-
   static bool classof(const MCSection *S) {
     return S->getVariant() == SV_ELF;
   }
index 98a1bf2f1ce4f8218a52c7b460acbfdc57b6b64b..68e80e3983a4e5a60c265c0b65b4f17070380234 100644 (file)
@@ -191,13 +191,6 @@ 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);
 }