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

Chris Lattner lattner at cs.uiuc.edu
Mon Nov 21 14:32:10 PST 2005



Changes in directory llvm/lib/Target/X86:

X86Subtarget.cpp updated: 1.6 -> 1.7
X86Subtarget.h updated: 1.5 -> 1.6
---
Log message:

Make the X86 subtarget compute the basic target type: ELF, Cygwin, Darwin, 
or native Win32


---
Diffs of the changes:  (+24 -15)

 X86Subtarget.cpp |   35 ++++++++++++++++++++---------------
 X86Subtarget.h   |    4 ++++
 2 files changed, 24 insertions(+), 15 deletions(-)


Index: llvm/lib/Target/X86/X86Subtarget.cpp
diff -u llvm/lib/Target/X86/X86Subtarget.cpp:1.6 llvm/lib/Target/X86/X86Subtarget.cpp:1.7
--- llvm/lib/Target/X86/X86Subtarget.cpp:1.6	Thu Sep  1 16:38:21 2005
+++ llvm/lib/Target/X86/X86Subtarget.cpp	Mon Nov 21 16:31:58 2005
@@ -21,37 +21,42 @@
     asmLeadingUnderscore(false), asmAlignmentIsInBytes(false),
     asmPrintDotLocalConstants(false), asmPrintDotLCommConstants(false),
     asmPrintConstantAlignment(false) {
-  // Declare a boolean for each major platform.
-  bool forCygwin = false;
-  bool forDarwin = false;
-  bool forWindows = false;
-
+      
+  // Default to ELF unless otherwise specified.
+  TargetType = isELF;
+      
   // Set the boolean corresponding to the current target triple, or the default
   // if one cannot be determined, to true.
   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;
-    forWindows = TT.find("win32") != std::string::npos;
+    if (TT.find("cygwin") != std::string::npos ||
+        TT.find("mingw")  != std::string::npos)
+      TargetType = isCygwin;
+    else if (TT.find("darwin") != std::string::npos)
+      TargetType = isDarwin;
+    else if (TT.find("win32") != std::string::npos)
+      TargetType = isWindows;
   } else if (TT.empty()) {
 #if defined(__CYGWIN__) || defined(__MINGW32__)
-    forCygwin = true;
+    TargetType = isCygwin;
 #elif defined(__APPLE__)
-    forDarwin = true;
+    TargetType = isDarwin;
 #elif defined(_WIN32)
-    forWindows = true;
+    TargetType = isWindows;
 #endif
   }
 
-  if (forCygwin) {
+  switch (TargetType) {
+  case isCygwin:
     asmLeadingUnderscore = true;
-  } else if (forDarwin) {
+    break;
+  case isDarwin:
     stackAlignment = 16;
     indirectExternAndWeakGlobals = true;
     asmDarwinLinkerStubs = true;
     asmLeadingUnderscore = true;
     asmPrintDotLCommConstants = true;
-  } else if (forWindows) {
+    break;
+  default: break;
   }
 }


Index: llvm/lib/Target/X86/X86Subtarget.h
diff -u llvm/lib/Target/X86/X86Subtarget.h:1.5 llvm/lib/Target/X86/X86Subtarget.h:1.6
--- llvm/lib/Target/X86/X86Subtarget.h:1.5	Thu Sep  1 16:38:21 2005
+++ llvm/lib/Target/X86/X86Subtarget.h	Mon Nov 21 16:31:58 2005
@@ -38,6 +38,10 @@
   bool asmPrintDotLCommConstants;
   bool asmPrintConstantAlignment;
 public:
+  enum {
+    isELF, isCygwin, isDarwin, isWindows
+  } TargetType;
+    
   /// This constructor initializes the data members to match that
   /// of the specified module.
   ///






More information about the llvm-commits mailing list