[llvm-commits] CVS: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp X86AsmPrinter.cpp X86AsmPrinter.h

Chris Lattner lattner at cs.uiuc.edu
Mon Nov 21 14:39:52 PST 2005



Changes in directory llvm/lib/Target/X86:

X86ATTAsmPrinter.cpp updated: 1.14 -> 1.15
X86AsmPrinter.cpp updated: 1.154 -> 1.155
X86AsmPrinter.h updated: 1.6 -> 1.7
---
Log message:

Use subtarget information computed by X86Subtarget instead of rolling our own.


---
Diffs of the changes:  (+22 -29)

 X86ATTAsmPrinter.cpp |    2 +-
 X86AsmPrinter.cpp    |   47 ++++++++++++++++++++---------------------------
 X86AsmPrinter.h      |    2 +-
 3 files changed, 22 insertions(+), 29 deletions(-)


Index: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp
diff -u llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.14 llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.15
--- llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.14	Mon Nov 21 16:19:48 2005
+++ llvm/lib/Target/X86/X86ATTAsmPrinter.cpp	Mon Nov 21 16:39:40 2005
@@ -54,7 +54,7 @@
       printMachineInstruction(II);
     }
   }
-  if (!forDarwin)
+  if (forELF)
     O << "\t.size " << CurrentFnName << ", .-" << CurrentFnName << "\n";
 
   // We didn't modify anything.


Index: llvm/lib/Target/X86/X86AsmPrinter.cpp
diff -u llvm/lib/Target/X86/X86AsmPrinter.cpp:1.154 llvm/lib/Target/X86/X86AsmPrinter.cpp:1.155
--- llvm/lib/Target/X86/X86AsmPrinter.cpp:1.154	Mon Nov 21 16:19:48 2005
+++ llvm/lib/Target/X86/X86AsmPrinter.cpp	Mon Nov 21 16:39:40 2005
@@ -16,6 +16,7 @@
 
 #include "X86ATTAsmPrinter.h"
 #include "X86IntelAsmPrinter.h"
+#include "X86Subtarget.h"
 #include "X86.h"
 #include "llvm/Module.h"
 #include "llvm/Type.h"
@@ -40,30 +41,16 @@
 
 /// doInitialization
 bool X86SharedAsmPrinter::doInitialization(Module &M) {
-  bool forCygwin = false;
+  const X86Subtarget *Subtarget = &TM.getSubtarget<X86Subtarget>();
+  
+  forELF = false;
   forDarwin = false;
-  forELF    = false;
-  bool forWin32 = false;
-  const std::string& TT = M.getTargetTriple();
-  if (TT.length() > 5) {
-    forCygwin = TT.find("cygwin") != std::string::npos ||
-                TT.find("mingw")  != std::string::npos;
-    forDarwin = TT.find("darwin") != std::string::npos;
-    if (!forDarwin && !forCygwin)
-      forELF = true;
-  } else if (TT.empty()) {
-#if defined(__CYGWIN__) || defined(__MINGW32__)
-    forCygwin = true;
-#elif defined(__APPLE__)
-    forDarwin = true;
-#elif defined(_WIN32)
-    forWin32 = true;
-#else
+  
+  switch (Subtarget->TargetType) {
+  case X86Subtarget::isELF:
     forELF = true;
-#endif
-  }
-
-  if (forDarwin) {
+    break;
+  case X86Subtarget::isDarwin:
     AlignmentIsInBytes = false;
     GlobalPrefix = "_";
     Data64bitsDirective = 0;       // we can't emit a 64-bit unit
@@ -72,12 +59,17 @@
     ConstantPoolSection = "\t.const\n";
     LCOMMDirective = "\t.lcomm\t";
     COMMDirectiveTakesAlignment = false;
-  } else if (forCygwin) {
+    forDarwin = true;
+    break;
+  case X86Subtarget::isCygwin:
     GlobalPrefix = "_";
     COMMDirectiveTakesAlignment = false;
-  } else if (forWin32) {
+    break;
+  case X86Subtarget::isWindows:
     GlobalPrefix = "_";
-  }  
+    break;
+  default: break;
+  }
   
   return AsmPrinter::doInitialization(M);
 }
@@ -87,7 +79,7 @@
 
   // Print out module-level global variables here.
   for (Module::const_global_iterator I = M.global_begin(),
-         E = M.global_end(); I != E; ++I)
+       E = M.global_end(); I != E; ++I) {
     if (I->hasInitializer()) {   // External global require no code
       O << "\n\n";
       std::string name = Mang->getValueName(I);
@@ -155,7 +147,8 @@
       O << "\n";
       EmitGlobalConstant(C);
     }
-
+  }
+  
   if (forDarwin) {
     SwitchSection("", 0);
     // Output stubs for external global variables


Index: llvm/lib/Target/X86/X86AsmPrinter.h
diff -u llvm/lib/Target/X86/X86AsmPrinter.h:1.6 llvm/lib/Target/X86/X86AsmPrinter.h:1.7
--- llvm/lib/Target/X86/X86AsmPrinter.h:1.6	Mon Nov 21 16:19:48 2005
+++ llvm/lib/Target/X86/X86AsmPrinter.h	Mon Nov 21 16:39:40 2005
@@ -35,7 +35,7 @@
   bool doFinalization(Module &M);
 
   bool forELF;
-  bool forDarwin;
+  bool forDarwin;  // FIXME: eliminate.
 
   // Necessary for Darwin to print out the apprioriate types of linker stubs
   std::set<std::string> FnStubs, GVStubs, LinkOnceStubs;






More information about the llvm-commits mailing list