Revert "[Clang] Warn about 'z' printf modifier in old MSVC."
authorNico Weber <thakis@chromium.org>
Tue, 28 Jan 2020 14:27:54 +0000 (09:27 -0500)
committerNico Weber <thakis@chromium.org>
Tue, 28 Jan 2020 14:27:54 +0000 (09:27 -0500)
This reverts commit fe0d1b6a8ac5048b8007e5e7cc2aeb4e3291bda0.
Makes Analysis/taint-generic.c fail on some Windows systems.

clang/lib/AST/FormatString.cpp
clang/test/Sema/format-strings-ms.c

index 2ca8fee..fcc0b3b 100644 (file)
@@ -748,15 +748,6 @@ bool FormatSpecifier::hasValidLengthModifier(const TargetInfo &Target,
     case LengthModifier::AsIntMax:
     case LengthModifier::AsSizeT:
     case LengthModifier::AsPtrDiff:
-      if (LM.getKind() == LengthModifier::AsSizeT &&
-          Target.getTriple().isOSMSVCRT() &&
-          !LO.isCompatibleWithMSVC(LangOptions::MSVC2015)) {
-        // The standard libraries before MSVC2015 didn't support the 'z' length
-        // modifier for size_t. So if the MS compatibility version is less than
-        // that, reject.
-        return false;
-      }
-
       switch (CS.getKind()) {
         case ConversionSpecifier::dArg:
         case ConversionSpecifier::DArg:
index c4d3e56..56a3490 100644 (file)
@@ -1,6 +1,4 @@
 // RUN: %clang_cc1 -fsyntax-only -verify -fms-compatibility -triple=i386-pc-win32 %s
-// RUN: %clang_cc1 -fsyntax-only -verify -fms-compatibility -triple=i386-pc-win32 -fms-compatibility-version=18 %s
-// RUN: %clang_cc1 -fsyntax-only -verify -fms-compatibility -triple=i386-pc-win32 -fms-compatibility-version=19 -DSIZE_T_OK %s
 // RUN: %clang_cc1 -fsyntax-only -verify -fms-compatibility -triple=i386-pc-win32 -Wformat-non-iso -DNON_ISO_WARNING %s
 
 int printf(const char *format, ...) __attribute__((format(printf, 1, 2)));
@@ -87,11 +85,4 @@ void z_test(void *p) {
   scanf("%Z", p); // expected-warning{{invalid conversion specifier 'Z'}}
 }
 
-void size_t_test(size_t s) {
-  printf("%zu", s);
-#ifndef SIZE_T_OK
-  // expected-warning@-2 {{length modifier 'z' results in undefined behavior or no effect with 'u' conversion specifier}}
-#endif
-}
-
 #endif