diff --git a/lib/Target/X86/X86AsmPrinter.cpp b/lib/Target/X86/X86AsmPrinter.cpp
index 338f6cd..da1eb8d 100644
--- a/lib/Target/X86/X86AsmPrinter.cpp
+++ b/lib/Target/X86/X86AsmPrinter.cpp
@@ -193,8 +193,13 @@
             O << TAI->getLCOMMDirective() << name << "," << Size;
             if (Subtarget->isTargetDarwin())
               O << "," << Align;
-          } else
+          } else {
             O << TAI->getCOMMDirective()  << name << "," << Size;
+            
+            // Leopard and above support aligned common symbols.
+            if (Subtarget->getDarwinVers() >= 9)
+              O << "," << Align;
+          }
         } else {
           if (!Subtarget->isTargetCygMing()) {
             if (I->hasInternalLinkage())
diff --git a/lib/Target/X86/X86Subtarget.cpp b/lib/Target/X86/X86Subtarget.cpp
index ae36fac..7b686ed 100644
--- a/lib/Target/X86/X86Subtarget.cpp
+++ b/lib/Target/X86/X86Subtarget.cpp
@@ -221,6 +221,7 @@
   , PICStyle(PICStyle::None)
   , X86SSELevel(NoMMXSSE)
   , HasX86_64(false)
+  , DarwinVers(0)
   , stackAlignment(8)
   // FIXME: this is a known good value for Yonah. How about others?
   , MaxInlineSizeThreshold(128)
@@ -256,14 +257,22 @@
   // if one cannot be determined, to true.
   const std::string& TT = M.getTargetTriple();
   if (TT.length() > 5) {
-    if (TT.find("cygwin") != std::string::npos)
-      TargetType = isCygwin;
-    else if (TT.find("mingw") != std::string::npos)
-      TargetType = isMingw;
-    else if (TT.find("darwin") != std::string::npos)
+    unsigned Pos;
+    if ((Pos = TT.find("-darwin")) != std::string::npos) {
       TargetType = isDarwin;
-    else if (TT.find("win32") != std::string::npos)
+      
+      // Compute the darwin version number.
+      if (isdigit(TT[Pos+7]))
+        DarwinVers = atoi(&TT[Pos+7]);
+      else
+        DarwinVers = 8;  // Minimum supported darwin is Tiger.
+    } else if (TT.find("cygwin") != std::string::npos) {
+      TargetType = isCygwin;
+    } else if (TT.find("mingw") != std::string::npos) {
+      TargetType = isMingw;
+    } else if (TT.find("win32") != std::string::npos) {
       TargetType = isWindows;
+    }
   } else if (TT.empty()) {
 #if defined(__CYGWIN__)
     TargetType = isCygwin;
@@ -271,6 +280,12 @@
     TargetType = isMingw;
 #elif defined(__APPLE__)
     TargetType = isDarwin;
+#if __APPLE_CC__ > 5400
+    DarwinVers = 9;  // GCC 5400+ is Leopard.
+#else
+    DarwinVers = 8;  // Minimum supported darwin is Tiger.
+#endif
+    
 #elif defined(_WIN32)
     TargetType = isWindows;
 #endif
@@ -279,11 +294,8 @@
   // If the asm syntax hasn't been overridden on the command line, use whatever
   // the target wants.
   if (AsmFlavor == X86Subtarget::Unset) {
-    if (TargetType == isWindows) {
-      AsmFlavor = X86Subtarget::Intel;
-    } else {
-      AsmFlavor = X86Subtarget::ATT;
-    }
+    AsmFlavor = (TargetType == isWindows)
+      ? X86Subtarget::Intel : X86Subtarget::ATT;
   }
 
   if (TargetType == isDarwin && Is64Bit)
diff --git a/lib/Target/X86/X86Subtarget.h b/lib/Target/X86/X86Subtarget.h
index 4f92343..ee193cf 100644
--- a/lib/Target/X86/X86Subtarget.h
+++ b/lib/Target/X86/X86Subtarget.h
@@ -64,6 +64,10 @@
   /// HasX86_64 - True if the processor supports X86-64 instructions.
   ///
   bool HasX86_64;
+  
+  /// DarwinVers - Nonzero if this is a darwin platform: the numeric
+  /// version of the platform, e.g. 8 = 10.4 (Tiger), 9 = 10.5 (Leopard), etc.
+  unsigned char DarwinVers; // Is any darwin-ppc platform.
 
   /// stackAlignment - The minimum alignment known to hold of the stack frame on
   /// entry to the function and which must be maintained by every function.
@@ -159,7 +163,10 @@
   bool isPICStyleStub() const { return PICStyle == PICStyle::Stub; }
   bool isPICStyleRIPRel() const { return PICStyle == PICStyle::RIPRel; }
   bool isPICStyleWinPIC() const { return PICStyle == PICStyle:: WinPIC; }
-    
+  
+  /// getDarwinVers - Return the darwin version number, 8 = tiger, 9 = leopard.
+  unsigned getDarwinVers() const { return DarwinVers; }
+  
   /// True if accessing the GV requires an extra load. For Windows, dllimported
   /// symbols are indirect, loading the value at address GV rather then the
   /// value of GV itself. This means that the GlobalAddress must be in the base
