Author: stulova Date: Tue Mar 26 04:22:37 2019 New Revision: 356987 URL: http://llvm.org/viewvc/llvm-project?rev=356987&view=rev Log: [OpenCL] Allow variadic macros as Clang feature.
Modified: cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td cfe/trunk/lib/Lex/PPDirectives.cpp cfe/trunk/test/Misc/warning-flags.c cfe/trunk/test/Preprocessor/macro_variadic.cl Modified: cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td?rev=356987&r1=356986&r2=356987&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td (original) +++ cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td Tue Mar 26 04:22:37 2019 @@ -395,8 +395,8 @@ def warn_cxx98_compat_empty_fnmacro_arg def note_macro_here : Note<"macro %0 defined here">; def note_macro_expansion_here : Note<"expansion of macro %0 requested here">; -def err_pp_opencl_variadic_macros : - Error<"variadic macros not supported in OpenCL">; +def ext_pp_opencl_variadic_macros : Extension< + "variadic macros are a Clang extension in OpenCL">; def err_pp_invalid_directive : Error<"invalid preprocessing directive">; def err_pp_directive_required : Error< Modified: cfe/trunk/lib/Lex/PPDirectives.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PPDirectives.cpp?rev=356987&r1=356986&r2=356987&view=diff ============================================================================== --- cfe/trunk/lib/Lex/PPDirectives.cpp (original) +++ cfe/trunk/lib/Lex/PPDirectives.cpp Tue Mar 26 04:22:37 2019 @@ -2181,8 +2181,7 @@ bool Preprocessor::ReadMacroParameterLis // OpenCL v1.2 s6.9.e: variadic macros are not supported. if (LangOpts.OpenCL) { - Diag(Tok, diag::err_pp_opencl_variadic_macros); - return true; + Diag(Tok, diag::ext_pp_opencl_variadic_macros); } // Lex the token after the identifier. Modified: cfe/trunk/test/Misc/warning-flags.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Misc/warning-flags.c?rev=356987&r1=356986&r2=356987&view=diff ============================================================================== --- cfe/trunk/test/Misc/warning-flags.c (original) +++ cfe/trunk/test/Misc/warning-flags.c Tue Mar 26 04:22:37 2019 @@ -96,4 +96,4 @@ CHECK-NEXT: warn_weak_import The list of warnings in -Wpedantic should NEVER grow. -CHECK: Number in -Wpedantic (not covered by other -W flags): 27 +CHECK: Number in -Wpedantic (not covered by other -W flags): 28 Modified: cfe/trunk/test/Preprocessor/macro_variadic.cl URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/macro_variadic.cl?rev=356987&r1=356986&r2=356987&view=diff ============================================================================== --- cfe/trunk/test/Preprocessor/macro_variadic.cl (original) +++ cfe/trunk/test/Preprocessor/macro_variadic.cl Tue Mar 26 04:22:37 2019 @@ -1,3 +1,20 @@ -// RUN: %clang_cc1 -verify %s +// RUN: %clang_cc1 -verify %s -cl-std=CL1.2 +// RUN: %clang_cc1 -verify %s -pedantic -DPEDANTIC -cl-std=CL1.2 -#define X(...) 1 // expected-error {{variadic macros not supported in OpenCL}} + +#define NO_VAR_FUNC(...) 5 +#define VAR_FUNC(...) func(__VA_ARGS__); +#define VAR_PRINTF(str, ...) printf(str, __VA_ARGS__); +#ifdef PEDANTIC +// expected-warning@-4{{variadic macros are a Clang extension in OpenCL}} +// expected-warning@-4{{variadic macros are a Clang extension in OpenCL}} +// expected-warning@-4{{variadic macros are a Clang extension in OpenCL}} +#endif + +int printf(__constant const char *st, ...); + +void foo() { + NO_VAR_FUNC(1, 2, 3); + VAR_FUNC(1, 2, 3); //expected-error{{implicit declaration of function 'func' is invalid in OpenCL}} + VAR_PRINTF("%i", 1); +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits