From: Nico Weber Date: Tue, 28 Jan 2020 14:27:54 +0000 (-0500) Subject: Revert "[Clang] Warn about 'z' printf modifier in old MSVC." X-Git-Tag: llvmorg-12-init~16630 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e916c8dfe461e272aa7ea115851db7ddda36b971;p=platform%2Fupstream%2Fllvm.git Revert "[Clang] Warn about 'z' printf modifier in old MSVC." This reverts commit fe0d1b6a8ac5048b8007e5e7cc2aeb4e3291bda0. Makes Analysis/taint-generic.c fail on some Windows systems. --- diff --git a/clang/lib/AST/FormatString.cpp b/clang/lib/AST/FormatString.cpp index 2ca8fee..fcc0b3b 100644 --- a/clang/lib/AST/FormatString.cpp +++ b/clang/lib/AST/FormatString.cpp @@ -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: diff --git a/clang/test/Sema/format-strings-ms.c b/clang/test/Sema/format-strings-ms.c index c4d3e56..56a3490 100644 --- a/clang/test/Sema/format-strings-ms.c +++ b/clang/test/Sema/format-strings-ms.c @@ -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