]> granicus.if.org Git - clang/commitdiff
Driver: correct behaviour of -fmsc-version=MAJOR
authorSaleem Abdulrasool <compnerd@compnerd.org>
Mon, 23 Jun 2014 17:36:36 +0000 (17:36 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Mon, 23 Jun 2014 17:36:36 +0000 (17:36 +0000)
Ensure that we properly handle the case where just the major version component
is provided by the user.

Thanks to Alp Toker for pointing out that this was not handled correctly!

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

lib/Frontend/CompilerInvocation.cpp
test/Driver/msc-version.c

index 9174e4fb704e19d8755ccc42ad89fb6b9037ee91..71138861d06a308827c2781e780d0c421fd93f04 100644 (file)
@@ -1223,7 +1223,11 @@ static unsigned parseMSCVersion(ArgList &Args, DiagnosticsEngine &Diags) {
         << Arg->getAsString(Args) << Value;
       return 0;
     }
-    return (Version < 100000) ? Version * 100000 : Version;
+    if (Version < 100)
+      Version = Version * 100;    // major -> major.minor
+    if (Version < 100000)
+      Version = Version * 100000; // major.minor -> major.minor.build
+    return Version;
   }
 
   // parse the dot-delimited component version
index 09115c9fe93fef5e9ffb39b8a6f3efd7bec033c6..027072ffd87c2a65ea7d33b17deae86da11ad299 100644 (file)
 // CHECK-MSC-VERSION-EXT: _MSC_FULL_VER 160030319
 // CHECK-MSC-VERSION-EXT: _MSC_VER 1600
 
+// RUN: %clang -target i686-windows -fms-compatibility -fmsc-version=14 -dM -E - </dev/null -o - | FileCheck %s -check-prefix CHECK-MSC-VERSION-MAJOR
+
+// CHECK-MSC-VERSION-MAJOR: _MSC_BUILD 1
+// CHECK-MSC-VERSION-MAJOR: _MSC_FULL_VER 140000000
+// CHECK-MSC-VERSION-MAJOR: _MSC_VER 1400
+
 // RUN: %clang -target i686-windows -fms-compatibility -fmsc-version=17.00 -dM -E - </dev/null -o - | FileCheck %s -check-prefix CHECK-MSC-VERSION-MAJOR-MINOR
 
 // CHECK-MSC-VERSION-MAJOR-MINOR: _MSC_BUILD 1