Refactor various TargetAsmInfo subclasses' TargetMachine members away
authorDan Gohman <gohman@apple.com>
Mon, 3 Nov 2008 18:22:42 +0000 (18:22 +0000)
committerDan Gohman <gohman@apple.com>
Mon, 3 Nov 2008 18:22:42 +0000 (18:22 +0000)
adding a TargetMachine member to the base TargetAsmInfo class instead.

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

13 files changed:
include/llvm/Target/DarwinTargetAsmInfo.h
include/llvm/Target/ELFTargetAsmInfo.h
include/llvm/Target/TargetAsmInfo.h
lib/Target/ARM/ARMTargetAsmInfo.cpp
lib/Target/Alpha/AlphaTargetAsmInfo.cpp
lib/Target/CellSPU/SPUTargetAsmInfo.cpp
lib/Target/DarwinTargetAsmInfo.cpp
lib/Target/ELFTargetAsmInfo.cpp
lib/Target/Mips/MipsTargetAsmInfo.cpp
lib/Target/PIC16/PIC16TargetAsmInfo.cpp
lib/Target/TargetAsmInfo.cpp
lib/Target/X86/X86TargetAsmInfo.cpp
lib/Target/X86/X86TargetAsmInfo.h

index a99e16df2c88f47a5c046f7aecd4c953c91c56bf..5813ce35057076bc1525f882cc9505e4f296982e 100644 (file)
@@ -44,8 +44,6 @@ namespace llvm {
     const Section* MergeableConstSection(const Type *Ty) const;
     const Section* MergeableStringSection(const GlobalVariable *GV) const;
     const Section* SelectSectionForMachineConst(const Type *Ty) const;
-  protected:
-    const TargetMachine* DTM;
   };
 }
 
index 593d9b14f87c70a60d7299826bf14adf6980f1ea..d065df3cc332c82936ba75712be4117975c2abcb 100644 (file)
@@ -33,8 +33,6 @@ namespace llvm {
     const Section* MergeableStringSection(const GlobalVariable *GV) const;
     virtual const Section*
     SelectSectionForMachineConst(const Type *Ty) const;
-  protected:
-    const TargetMachine* ETM;
   };
 }
 
index e3a8a5720e4be3a5ca26714c8b0a638308d8cc46..44c9e55d3e861bf30b6e811e0705da401ede1941 100644 (file)
@@ -126,6 +126,9 @@ namespace llvm {
     mutable SectionFlags::FlagsStringsMapType FlagsStrings;
     void fillDefaultValues();
   protected:
+    /// TM - The current TargetMachine.
+    const TargetMachine &TM;
+
     //===------------------------------------------------------------------===//
     // Properties to be set by the target writer, used to configure asm printer.
     //
@@ -510,8 +513,7 @@ namespace llvm {
     const char *const *AsmTransCBE; // Defaults to empty
 
   public:
-    TargetAsmInfo();
-    TargetAsmInfo(const TargetMachine &TM);
+    explicit TargetAsmInfo(const TargetMachine &TM);
     virtual ~TargetAsmInfo();
 
     const Section* getNamedSection(const char *Name,
index dfbe4c277a0cbeb89b26a0a061adb76b1ea1d763..aae3712fb130e7ac4f142ca2f8f53c13ff2cd5a7 100644 (file)
@@ -45,7 +45,7 @@ const char *const llvm::arm_asm_table[] = {
 
 ARMDarwinTargetAsmInfo::ARMDarwinTargetAsmInfo(const ARMTargetMachine &TM):
   ARMTargetAsmInfo<DarwinTargetAsmInfo>(TM) {
-  Subtarget = &DTM->getSubtarget<ARMSubtarget>();
+  Subtarget = &TM.getSubtarget<ARMSubtarget>();
 
   GlobalPrefix = "_";
   PrivateGlobalPrefix = "L";
@@ -93,7 +93,7 @@ ARMDarwinTargetAsmInfo::ARMDarwinTargetAsmInfo(const ARMTargetMachine &TM):
 
 ARMELFTargetAsmInfo::ARMELFTargetAsmInfo(const ARMTargetMachine &TM):
   ARMTargetAsmInfo<ELFTargetAsmInfo>(TM) {
-  Subtarget = &ETM->getSubtarget<ARMSubtarget>();
+  Subtarget = &TM.getSubtarget<ARMSubtarget>();
 
   NeedsSet = false;
   HasLEB128 = true;
index 90cbac58195f6cea0f9afe419e783c3189ac90e0..61fcf83385eede6ed748cab12beecdc165fe3409 100644 (file)
 //
 //===----------------------------------------------------------------------===//
 
+#include "AlphaTargetMachine.h"
 #include "AlphaTargetAsmInfo.h"
 
 using namespace llvm;
 
-AlphaTargetAsmInfo::AlphaTargetAsmInfo(const AlphaTargetMachine &TM) {
+AlphaTargetAsmInfo::AlphaTargetAsmInfo(const AlphaTargetMachine &TM) 
+  : TargetAsmInfo(TM) {
   AlignmentIsInBytes = false;
   PrivateGlobalPrefix = "$";
   JumpTableDirective = ".gprel32";
index f79deed5957cde25eba825edb623c138be49d7d6..89ab0e175af8362ca71bb2324e0ee8890053f5fe 100644 (file)
@@ -16,7 +16,8 @@
 #include "llvm/Function.h"
 using namespace llvm;
 
-SPUTargetAsmInfo::SPUTargetAsmInfo(const SPUTargetMachine &TM) {
+SPUTargetAsmInfo::SPUTargetAsmInfo(const SPUTargetMachine &TM)
+  : TargetAsmInfo(TM) {
   PCSymbol = ".";
   CommentString = "#";
   GlobalPrefix = "";
index 20866d7617e1b07c0578b9b0f9cf90454cb78d6d..cb73d31d4bd3af5d59fc37d386c471648fa2bd6d 100644 (file)
@@ -24,8 +24,8 @@
 
 using namespace llvm;
 
-DarwinTargetAsmInfo::DarwinTargetAsmInfo(const TargetMachine &TM) {
-  DTM = &TM;
+DarwinTargetAsmInfo::DarwinTargetAsmInfo(const TargetMachine &TM) 
+  : TargetAsmInfo(TM) {
 
   CStringSection_ = getUnnamedSection("\t.cstring",
                                 SectionFlags::Mergeable | SectionFlags::Strings);
@@ -76,7 +76,7 @@ const Section*
 DarwinTargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV) const {
   SectionKind::Kind Kind = SectionKindForGlobal(GV);
   bool isWeak = GV->mayBeOverridden();
-  bool isNonStatic = (DTM->getRelocationModel() != Reloc::Static);
+  bool isNonStatic = TM.getRelocationModel() != Reloc::Static;
 
   switch (Kind) {
    case SectionKind::Text:
@@ -112,13 +112,12 @@ DarwinTargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV) const {
 
 const Section*
 DarwinTargetAsmInfo::MergeableStringSection(const GlobalVariable *GV) const {
-  const TargetData *TD = DTM->getTargetData();
+  const TargetData *TD = TM.getTargetData();
   Constant *C = cast<GlobalVariable>(GV)->getInitializer();
   const Type *Type = cast<ConstantArray>(C)->getType()->getElementType();
 
   unsigned Size = TD->getABITypeSize(Type);
   if (Size) {
-    const TargetData *TD = DTM->getTargetData();
     unsigned Align = TD->getPreferredAlignment(GV);
     if (Align <= 32)
       return getCStringSection_();
@@ -136,7 +135,7 @@ DarwinTargetAsmInfo::MergeableConstSection(const GlobalVariable *GV) const {
 
 inline const Section*
 DarwinTargetAsmInfo::MergeableConstSection(const Type *Ty) const {
-  const TargetData *TD = DTM->getTargetData();
+  const TargetData *TD = TM.getTargetData();
 
   unsigned Size = TD->getABITypeSize(Ty);
   if (Size == 4)
@@ -155,7 +154,7 @@ DarwinTargetAsmInfo::SelectSectionForMachineConst(const Type *Ty) const {
 
   // Handle weird special case, when compiling PIC stuff.
   if (S == getReadOnlySection() &&
-      DTM->getRelocationModel() != Reloc::Static)
+      TM.getRelocationModel() != Reloc::Static)
     return ConstDataSection;
 
   return S;
index dcf18309e9c3d6bdac7db11e2a53e54605085de9..47727d111f12b6ab5c5ccd62954e71228bfb3a00 100644 (file)
@@ -24,8 +24,8 @@
 
 using namespace llvm;
 
-ELFTargetAsmInfo::ELFTargetAsmInfo(const TargetMachine &TM) {
-  ETM = &TM;
+ELFTargetAsmInfo::ELFTargetAsmInfo(const TargetMachine &TM)
+  : TargetAsmInfo(TM) {
 
   BSSSection_  = getUnnamedSection("\t.bss",
                                    SectionFlags::Writeable | SectionFlags::BSS);
@@ -102,7 +102,7 @@ ELFTargetAsmInfo::MergeableConstSection(const GlobalVariable *GV) const {
 
 inline const Section*
 ELFTargetAsmInfo::MergeableConstSection(const Type *Ty) const {
-  const TargetData *TD = ETM->getTargetData();
+  const TargetData *TD = TM.getTargetData();
 
   // FIXME: string here is temporary, until stuff will fully land in.
   // We cannot use {Four,Eight,Sixteen}ByteConstantSection here, since it's
@@ -121,7 +121,7 @@ ELFTargetAsmInfo::MergeableConstSection(const Type *Ty) const {
 
 const Section*
 ELFTargetAsmInfo::MergeableStringSection(const GlobalVariable *GV) const {
-  const TargetData *TD = ETM->getTargetData();
+  const TargetData *TD = TM.getTargetData();
   Constant *C = cast<GlobalVariable>(GV)->getInitializer();
   const ConstantArray *CVA = cast<ConstantArray>(C);
   const Type *Ty = CVA->getType()->getElementType();
@@ -131,7 +131,6 @@ ELFTargetAsmInfo::MergeableStringSection(const GlobalVariable *GV) const {
     assert(getCStringSection() && "Should have string section prefix");
 
     // We also need alignment here
-    const TargetData *TD = ETM->getTargetData();
     unsigned Align = TD->getPrefTypeAlignment(Ty);
     if (Align < Size)
       Align = Size;
index 0df62492f3cfda7c17cc703a23983646c7bb813f..900a1bd04a95ed9d33a09d793fe430ee62e0f37c 100644 (file)
@@ -65,7 +65,7 @@ SectionKindForGlobal(const GlobalValue *GV) const {
     return K;
 
   if (isa<GlobalVariable>(GV)) {
-    const TargetData *TD = ETM->getTargetData();
+    const TargetData *TD = TM.getTargetData();
     unsigned Size = TD->getABITypeSize(GV->getType()->getElementType());
     unsigned Threshold = Subtarget->getSSectionThreshold();
 
index 0a56a6e950cfc03d830bd262f8b7e9e399fe435c..91dcbe3e058996a024c16e1354f6c9729f9faefb 100644 (file)
 //===----------------------------------------------------------------------===//
 
 #include "PIC16TargetAsmInfo.h"
+#include "PIC16TargetMachine.h"
 
 using namespace llvm;
 
 PIC16TargetAsmInfo::
-PIC16TargetAsmInfo(const PIC16TargetMachine &TM) 
-{
+PIC16TargetAsmInfo(const PIC16TargetMachine &TM)
+  : TargetAsmInfo(TM) {
   Data16bitsDirective = "\t.half\t";
   Data32bitsDirective = "\t.word\t";
   CommentString = ";";
index edbacb3d497ed09c47b20a76b281ad6a802ae22b..a124922e6cbdb4931bb7f5689718fbed16589986 100644 (file)
@@ -119,11 +119,8 @@ void TargetAsmInfo::fillDefaultValues() {
   DataSection = getUnnamedSection("\t.data", SectionFlags::Writeable);
 }
 
-TargetAsmInfo::TargetAsmInfo() {
-  fillDefaultValues();
-}
-
-TargetAsmInfo::TargetAsmInfo(const TargetMachine &TM) {
+TargetAsmInfo::TargetAsmInfo(const TargetMachine &tm) 
+  : TM(tm) {
   fillDefaultValues();
 }
 
index 70e77170d339c42ab9a52bcf3971287f20f1d8d0..abb05260cbac6e0243158ada3d1ba0495b744868 100644 (file)
@@ -39,7 +39,7 @@ const char *const llvm::x86_asm_table[] = {
 
 X86DarwinTargetAsmInfo::X86DarwinTargetAsmInfo(const X86TargetMachine &TM):
   X86TargetAsmInfo<DarwinTargetAsmInfo>(TM) {
-  const X86Subtarget* Subtarget = &DTM->getSubtarget<X86Subtarget>();
+  const X86Subtarget* Subtarget = &TM.getSubtarget<X86Subtarget>();
   bool is64Bit = Subtarget->is64Bit();
 
   AlignmentIsInBytes = false;
@@ -52,7 +52,7 @@ X86DarwinTargetAsmInfo::X86DarwinTargetAsmInfo(const X86TargetMachine &TM):
   LessPrivateGlobalPrefix = "l";  // Marker for some ObjC metadata
   BSSSection = 0;                       // no BSS section.
   ZeroFillDirective = "\t.zerofill\t";  // Uses .zerofill
-  if (DTM->getRelocationModel() != Reloc::Static)
+  if (TM.getRelocationModel() != Reloc::Static)
     ConstantPoolSection = "\t.const_data";
   else
     ConstantPoolSection = "\t.const\n";
@@ -171,17 +171,17 @@ X86ELFTargetAsmInfo::X86ELFTargetAsmInfo(const X86TargetMachine &TM):
   DwarfExceptionSection = "\t.section\t.gcc_except_table,\"a\",@progbits";
 
   // On Linux we must declare when we can use a non-executable stack.
-  if (ETM->getSubtarget<X86Subtarget>().isLinux())
+  if (TM.getSubtarget<X86Subtarget>().isLinux())
     NonexecutableStackDirective = "\t.section\t.note.GNU-stack,\"\",@progbits";
 }
 
 unsigned
 X86ELFTargetAsmInfo::PreferredEHDataFormat(DwarfEncoding::Target Reason,
                                            bool Global) const {
-  CodeModel::Model CM = ETM->getCodeModel();
-  bool is64Bit = ETM->getSubtarget<X86Subtarget>().is64Bit();
+  CodeModel::Model CM = TM.getCodeModel();
+  bool is64Bit = TM.getSubtarget<X86Subtarget>().is64Bit();
 
-  if (ETM->getRelocationModel() == Reloc::PIC_) {
+  if (TM.getRelocationModel() == Reloc::PIC_) {
     unsigned Format = 0;
 
     if (!is64Bit)
@@ -216,7 +216,6 @@ X86ELFTargetAsmInfo::PreferredEHDataFormat(DwarfEncoding::Target Reason,
 
 X86COFFTargetAsmInfo::X86COFFTargetAsmInfo(const X86TargetMachine &TM):
   X86GenericTargetAsmInfo(TM) {
-  X86TM = &TM;
 
   GlobalPrefix = "_";
   LCOMMDirective = "\t.lcomm\t";
@@ -251,10 +250,10 @@ X86COFFTargetAsmInfo::X86COFFTargetAsmInfo(const X86TargetMachine &TM):
 unsigned
 X86COFFTargetAsmInfo::PreferredEHDataFormat(DwarfEncoding::Target Reason,
                                             bool Global) const {
-  CodeModel::Model CM = X86TM->getCodeModel();
-  bool is64Bit = X86TM->getSubtarget<X86Subtarget>().is64Bit();
+  CodeModel::Model CM = TM.getCodeModel();
+  bool is64Bit = TM.getSubtarget<X86Subtarget>().is64Bit();
 
-  if (X86TM->getRelocationModel() == Reloc::PIC_) {
+  if (TM.getRelocationModel() == Reloc::PIC_) {
     unsigned Format = 0;
 
     if (!is64Bit)
index 9100fc0092c3587c563d71747434ea57995456b8..806bcd5614aa4a4fc2dd18620f2d41505c910ea3 100644 (file)
@@ -63,8 +63,6 @@ namespace llvm {
     virtual std::string UniqueSectionForGlobal(const GlobalValue* GV,
                                                SectionKind::Kind kind) const;
     virtual std::string printSectionFlags(unsigned flags) const;
-  protected:
-    const X86TargetMachine *X86TM;
   };
 
   struct X86WinTargetAsmInfo : public X86GenericTargetAsmInfo {