diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2018-11-13 22:30:35 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2018-11-13 22:30:35 +0000 |
commit | e19dc6137fadf44aac0385357e3169350a2061c0 (patch) | |
tree | 9bee21c25e6b6cf0d64b179c8bd9d99ee2ed77c2 /clang/lib | |
parent | f54aeed6f40ddea8c368f8c0661ea96b0c34f342 (diff) | |
download | bcm5719-llvm-e19dc6137fadf44aac0385357e3169350a2061c0.tar.gz bcm5719-llvm-e19dc6137fadf44aac0385357e3169350a2061c0.zip |
OpenCL: Don't warn on v printf modifier
This avoids spurious warnings, but could use
a lot of work. For example the number of vector
elements is not verified, and the passed
value type is not checked.
Fixes bug 39486
llvm-svn: 346806
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/AST/FormatString.cpp | 5 | ||||
-rw-r--r-- | clang/lib/AST/PrintfFormatString.cpp | 7 |
2 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/AST/FormatString.cpp b/clang/lib/AST/FormatString.cpp index 5e2137c7088..565bd03a7bb 100644 --- a/clang/lib/AST/FormatString.cpp +++ b/clang/lib/AST/FormatString.cpp @@ -618,6 +618,9 @@ const char *ConversionSpecifier::toString() const { // MS specific specifiers. case ZArg: return "Z"; + + // OpenCL specific specifiers. + case VArg: return "v"; } return nullptr; } @@ -875,6 +878,8 @@ bool FormatSpecifier::hasStandardConversionSpecifier( case ConversionSpecifier::CArg: case ConversionSpecifier::SArg: return LangOpt.ObjC; + case ConversionSpecifier::VArg: + return LangOpt.OpenCL; case ConversionSpecifier::InvalidSpecifier: case ConversionSpecifier::FreeBSDbArg: case ConversionSpecifier::FreeBSDDArg: diff --git a/clang/lib/AST/PrintfFormatString.cpp b/clang/lib/AST/PrintfFormatString.cpp index f22c4f8f644..877f89055ab 100644 --- a/clang/lib/AST/PrintfFormatString.cpp +++ b/clang/lib/AST/PrintfFormatString.cpp @@ -362,6 +362,12 @@ static PrintfSpecifierResult ParsePrintfSpecifier(FormatStringHandler &H, case 'Z': if (Target.getTriple().isOSMSVCRT()) k = ConversionSpecifier::ZArg; + break; + // OpenCL specific. + case 'v': + if (LO.OpenCL) + k = ConversionSpecifier::VArg; + break; } // Check to see if we used the Objective-C modifier flags with @@ -1026,6 +1032,7 @@ bool PrintfSpecifier::hasValidPrecision() const { case ConversionSpecifier::FreeBSDrArg: case ConversionSpecifier::FreeBSDyArg: case ConversionSpecifier::PArg: + case ConversionSpecifier::VArg: return true; default: |