The preferred alignment defaults to the ABI one. Omit it if it is the same.

llvm-svn: 197440
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index bdcea84..cce3ae63 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -485,8 +485,8 @@
     this->UIntMaxType = TargetInfo::UnsignedLongLong;
     this->Int64Type = TargetInfo::SignedLongLong;
     this->SizeType = TargetInfo::UnsignedInt;
-    this->DescriptionString = "E-p:32:32:32-"
-                              "i64:64:64-n32";
+    this->DescriptionString = "E-p:32:32-"
+                              "i64:64-n32";
   }
 };
 
@@ -625,8 +625,8 @@
     this->IntPtrType = TargetInfo::SignedInt;
     // RegParmMax is inherited from the underlying architecture
     this->LongDoubleFormat = &llvm::APFloat::IEEEdouble;
-    this->DescriptionString = "e-i64:64:64"
-                              "-p:32:32:32-v128:32:32";
+    this->DescriptionString = "e-i64:64"
+                              "-p:32:32-v128:32";
   }
   virtual typename Target::CallingConvCheckResult checkCallingConvention(
       CallingConv CC) const {
@@ -1179,8 +1179,8 @@
 class PPC32TargetInfo : public PPCTargetInfo {
 public:
   PPC32TargetInfo(const llvm::Triple &Triple) : PPCTargetInfo(Triple) {
-    DescriptionString = "E-p:32:32:32-"
-                        "i64:64:64-n32";
+    DescriptionString = "E-p:32:32-"
+                        "i64:64-n32";
 
     switch (getTriple().getOS()) {
     case llvm::Triple::Linux:
@@ -1225,11 +1225,11 @@
       LongDoubleWidth = LongDoubleAlign = 64;
       LongDoubleFormat = &llvm::APFloat::IEEEdouble;
       DescriptionString = "E-"
-                          "i64:64:64-"
+                          "i64:64-"
                           "n32:64";
     } else
       DescriptionString = "E-"
-                          "i64:64:64-f128:128:128-"
+                          "i64:64-f128:128-"
                           "n32:64";
 
     // PPC64 supports atomics up to 8 bytes.
@@ -1253,7 +1253,7 @@
     PtrDiffType = SignedInt;    // for http://llvm.org/bugs/show_bug.cgi?id=15726
     LongLongAlign = 32;
     SuitableAlign = 128;
-    DescriptionString = "E-p:32:32:32"
+    DescriptionString = "E-p:32:32"
                         "-n32";
   }
   virtual BuiltinVaListKind getBuiltinVaListKind() const {
@@ -1269,7 +1269,7 @@
     HasAlignMac68kSupport = true;
     SuitableAlign = 128;
     DescriptionString = "E-"
-                        "i64:64:64-n32:64";
+                        "i64:64-n32:64";
   }
 };
 } // end anonymous namespace.
@@ -1376,8 +1376,8 @@
       PointerWidth = PointerAlign = 32;
       SizeType     = PtrDiffType = IntPtrType = TargetInfo::UnsignedInt;
       DescriptionString
-        = "e-p:32:32:32-i64:64:64"
-          "-v16:16:16-v32:32:32-"
+        = "e-p:32:32-i64:64"
+          "-v16:16-v32:32-"
           "n16:32:64";
   }
   };
@@ -1388,8 +1388,8 @@
       PointerWidth = PointerAlign = 64;
       SizeType     = PtrDiffType = IntPtrType = TargetInfo::UnsignedLongLong;
       DescriptionString
-        = "e-i64:64:64"
-          "-v16:16:16-v32:32:32-"
+        = "e-i64:64"
+          "-v16:16-v32:32-"
           "n16:32:64";
   }
   };
@@ -1408,27 +1408,27 @@
 
 static const char *DescriptionStringR600 =
   "e"
-  "-p:32:32:32"
-  "-i64:64:64"
-  "-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v96:128:128"
-  "-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024-v2048:2048:2048"
+  "-p:32:32"
+  "-i64:64"
+  "-v16:16-v24:32-v32:32-v48:64-v96:128"
+  "-v192:256-v256:256-v512:512-v1024:1024-v2048:2048"
   "-n32:64";
 
 static const char *DescriptionStringR600DoubleOps =
   "e"
-  "-p:32:32:32"
-  "-i64:64:64"
-  "-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v96:128:128"
-  "-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024-v2048:2048:2048"
+  "-p:32:32"
+  "-i64:64"
+  "-v16:16-v24:32-v32:32-v48:64-v96:128"
+  "-v192:256-v256:256-v512:512-v1024:1024-v2048:2048"
   "-n32:64";
 
 static const char *DescriptionStringSI =
   "e"
   ""
-  "-p3:32:32:32"
-  "-i64:64:64"
-  "-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v96:128:128"
-  "-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024-v2048:2048:2048"
+  "-p3:32:32"
+  "-i64:64"
+  "-v16:16-v24:32-v32:32-v48:64-v96:128"
+  "-v192:256-v256:256-v512:512-v1024:1024-v2048:2048"
   "-n32:64";
 
 class R600TargetInfo : public TargetInfo {
@@ -2933,9 +2933,9 @@
     LongDoubleWidth = 96;
     LongDoubleAlign = 32;
     SuitableAlign = 128;
-    DescriptionString = "e-p:32:32:32"
+    DescriptionString = "e-p:32:32"
                         "-f64:32:64-"
-                        "f80:32:32-n8:16:32-S128";
+                        "f80:32-n8:16:32-S128";
     SizeType = UnsignedInt;
     PtrDiffType = SignedInt;
     IntPtrType = SignedInt;
@@ -3029,9 +3029,9 @@
     MaxVectorAlign = 256;
     SizeType = UnsignedLong;
     IntPtrType = SignedLong;
-    DescriptionString = "e-p:32:32:32"
+    DescriptionString = "e-p:32:32"
                         "-f64:32:64-"
-                        "f80:128:128-n8:16:32-S128";
+                        "f80:128-n8:16:32-S128";
     HasAlignMac68kSupport = true;
   }
 
@@ -3047,9 +3047,9 @@
     TLSSupported = false;
     WCharType = UnsignedShort;
     DoubleAlign = LongLongAlign = 64;
-    DescriptionString = "e-p:32:32:32-"
-                        "i64:64:64-"
-                        "f80:32:32-n8:16:32-S32";
+    DescriptionString = "e-p:32:32-"
+                        "i64:64-"
+                        "f80:32-n8:16:32-S32";
   }
   virtual void getTargetDefines(const LangOptions &Opts,
                                 MacroBuilder &Builder) const {
@@ -3116,9 +3116,9 @@
     TLSSupported = false;
     WCharType = UnsignedShort;
     DoubleAlign = LongLongAlign = 64;
-    DescriptionString = "e-p:32:32:32-"
-                        "i64:64:64-"
-                        "f80:32:32-n8:16:32-S32";
+    DescriptionString = "e-p:32:32-"
+                        "i64:64-"
+                        "f80:32-n8:16:32-S32";
   }
   virtual void getTargetDefines(const LangOptions &Opts,
                                 MacroBuilder &Builder) const {
@@ -3225,8 +3225,8 @@
     RegParmMax = 6;
 
     DescriptionString = "e-"
-                        "i64:64:64-"
-                        "s:64:64-f80:128:128-n8:16:32:64-S128";
+                        "i64:64-"
+                        "s:64-f80:128-n8:16:32:64-S128";
 
     // Use fpret only for long double.
     RealTypeUsesObjCFPRet = (1 << TargetInfo::LongDouble);
@@ -3399,8 +3399,8 @@
     PointerWidth = PointerAlign = 64;
     SuitableAlign = 128;
     DescriptionString = "e-"
-                        "i64:64:64-i128:128:128-"
-                        "f128:128:128-n32:64-S128";
+                        "i64:64-i128:128-"
+                        "f128:128-n32:64-S128";
 
     WCharType = UnsignedInt;
     LongDoubleFormat = &llvm::APFloat::IEEEquad;
@@ -3713,12 +3713,12 @@
     if (IsThumb) {
       // Thumb1 add sp, #imm requires the immediate value be multiple of 4,
       // so set preferred for small types to 32.
-      DescriptionString = ("e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-"
-                           "i64:64:64-"
+      DescriptionString = ("e-p:32:32-i1:8:32-i8:8:32-i16:16:32-"
+                           "i64:64-"
                            "v128:64:128-a:0:32-n32-S64");
     } else {
-      DescriptionString = ("e-p:32:32:32-"
-                           "i64:64:64-"
+      DescriptionString = ("e-p:32:32-"
+                           "i64:64-"
                            "v128:64:128-n32-S64");
     }
 
@@ -3767,11 +3767,11 @@
       if (IsThumb) {
         // Thumb1 add sp, #imm requires the immediate value be multiple of 4,
         // so set preferred for small types to 32.
-        DescriptionString = ("e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32"
+        DescriptionString = ("e-p:32:32-i1:8:32-i8:8:32-i16:16:32"
                              "-f64:32:64"
                              "-v64:32:64-v128:32:128-a:0:32-n32-S32");
       } else {
-        DescriptionString = ("e-p:32:32:32"
+        DescriptionString = ("e-p:32:32"
                              "-f64:32:64"
                              "-v64:32:64-v128:32:128-a:0:32-n32-S32");
       }
@@ -4228,8 +4228,8 @@
 public:
   HexagonTargetInfo(const llvm::Triple &Triple) : TargetInfo(Triple) {
     BigEndian = false;
-    DescriptionString = ("e-p:32:32:32-"
-                         "i64:64:64-i1:32:32"
+    DescriptionString = ("e-p:32:32-"
+                         "i64:64-i1:32"
                          "-a:0-n32");
 
     // {} in inline assembly are packet specifiers, not assembly variant
@@ -4486,8 +4486,8 @@
 public:
   SparcV8TargetInfo(const llvm::Triple &Triple) : SparcTargetInfo(Triple) {
     // FIXME: Support Sparc quad-precision long double?
-    DescriptionString = "E-p:32:32:32-"
-                        "i64:64:64-n32-S64";
+    DescriptionString = "E-p:32:32-"
+                        "i64:64-n32-S64";
   }
 
   virtual void getTargetDefines(const LangOptions &Opts,
@@ -4503,7 +4503,7 @@
   SparcV9TargetInfo(const llvm::Triple &Triple) : SparcTargetInfo(Triple) {
     // FIXME: Support Sparc quad-precision long double?
     DescriptionString = "E-"
-                        "i64:64:64-n32:64-S128";
+                        "i64:64-n32:64-S128";
     // This is an LP64 platform.
     LongWidth = LongAlign = PointerWidth = PointerAlign = 64;
 
@@ -4678,7 +4678,7 @@
       IntPtrType = SignedInt;
       PtrDiffType = SignedInt;
       SigAtomicType = SignedLong;
-      DescriptionString = "e-p:16:16:16-i32:16:32-n8:16";
+      DescriptionString = "e-p:16:16-i32:16:32-n8:16";
    }
     virtual void getTargetDefines(const LangOptions &Opts,
                                   MacroBuilder &Builder) const {
@@ -4774,10 +4774,10 @@
       FloatFormat = &llvm::APFloat::IEEEsingle;
       DoubleFormat = &llvm::APFloat::IEEEsingle;
       LongDoubleFormat = &llvm::APFloat::IEEEsingle;
-      DescriptionString = "E-p:32:32:32-i8:8:32-"
-                          "i16:16:32-i64:32:32"
-                          "-f64:32:32-v64:32:32-"
-                          "v128:32:32-a:0:32-n32";
+      DescriptionString = "E-p:32:32-i8:8:32-"
+                          "i16:16:32-i64:32"
+                          "-f64:32-v64:32-"
+                          "v128:32-a:0:32-n32";
       AddrSpaceMap = &TCEOpenCLAddrSpaceMap;
       UseAddrSpaceMapMangling = true;
     }
@@ -5114,8 +5114,8 @@
 
 class Mips32EBTargetInfo : public Mips32TargetInfoBase {
   virtual void setDescriptionString() {
-    DescriptionString = "E-p:32:32:32-i8:8:32-i16:16:32-"
-                        "i64:64:64-n32-S64";
+    DescriptionString = "E-p:32:32-i8:8:32-i16:16:32-"
+                        "i64:64-n32-S64";
   }
 
 public:
@@ -5132,8 +5132,8 @@
 
 class Mips32ELTargetInfo : public Mips32TargetInfoBase {
   virtual void setDescriptionString() {
-    DescriptionString = "e-p:32:32:32-i8:8:32-i16:16:32-"
-                        "i64:64:64-n32-S64";
+    DescriptionString = "e-p:32:32-i8:8:32-i16:16:32-"
+                        "i64:64-n32-S64";
   }
 
 public:
@@ -5242,12 +5242,12 @@
 class Mips64EBTargetInfo : public Mips64TargetInfoBase {
   virtual void setDescriptionString() {
     if (ABI == "n32")
-      DescriptionString = "E-p:32:32:32-i8:8:32-i16:16:32-"
-                          "i64:64:64-f128:128:128-"
+      DescriptionString = "E-p:32:32-i8:8:32-i16:16:32-"
+                          "i64:64-f128:128-"
                           "n32:64-S128";
     else
       DescriptionString = "E-i8:8:32-i16:16:32-"
-                          "i64:64:64-f128:128:128-"
+                          "i64:64-f128:128-"
                           "n32:64-S128";
 
   }
@@ -5266,12 +5266,12 @@
 class Mips64ELTargetInfo : public Mips64TargetInfoBase {
   virtual void setDescriptionString() {
     if (ABI == "n32")
-      DescriptionString = "e-p:32:32:32-i8:8:32-i16:16:32-"
-                          "i64:64:64-f128:128:128"
+      DescriptionString = "e-p:32:32-i8:8:32-i16:16:32-"
+                          "i64:64-f128:128"
                           "-n32:64-S128";
     else
       DescriptionString = "e-i8:8:32-i16:16:32-"
-                          "i64:64:64-f128:128:128-"
+                          "i64:64-f128:128-"
                           "n32:64-S128";
   }
 public:
@@ -5418,10 +5418,10 @@
       SizeType     = TargetInfo::UnsignedInt;
       PtrDiffType = IntPtrType = TargetInfo::SignedInt;
       DescriptionString
-        = "e-p:32:32:32-i64:64:64"
-          "-v16:16:16-v24:32:32-v32:32:32-v48:64:64-"
-          "v96:128:128-v192:256:256-v256:256:256-"
-          "v512:512:512-v1024:1024:1024";
+        = "e-p:32:32-i64:64"
+          "-v16:16-v24:32-v32:32-v48:64-"
+          "v96:128-v192:256-v256:256-"
+          "v512:512-v1024:1024";
     }
     virtual void getTargetDefines(const LangOptions &Opts,
                                   MacroBuilder &Builder) const {
@@ -5436,10 +5436,10 @@
       SizeType     = TargetInfo::UnsignedLong;
       PtrDiffType = IntPtrType = TargetInfo::SignedLong;
       DescriptionString
-        = "e-i64:64:64"
-          "-v16:16:16-v24:32:32-v32:32:32-v48:64:64-"
-          "v96:128:128-v192:256:256-v256:256:256-"
-          "v512:512:512-v1024:1024:1024";
+        = "e-i64:64"
+          "-v16:16-v24:32-v32:32-v48:64-"
+          "v96:128-v192:256-v256:256-"
+          "v512:512-v1024:1024";
     }
     virtual void getTargetDefines(const LangOptions &Opts,
                                   MacroBuilder &Builder) const {
@@ -5464,9 +5464,9 @@
     WCharType = UnsignedChar;
     WIntType = UnsignedInt;
     UseZeroLengthBitfieldAlignment = true;
-    DescriptionString = "e-p:32:32:32-a:0:32-n32"
-                        "-i1:8:32-i8:8:32-i16:16:32-i64:32:32"
-                        "-f16:16:32-f64:32:32";
+    DescriptionString = "e-p:32:32-a:0:32-n32"
+                        "-i1:8:32-i8:8:32-i16:16:32-i64:32"
+                        "-f16:16:32-f64:32";
   }
   virtual void getTargetDefines(const LangOptions &Opts,
                                 MacroBuilder &Builder) const {