r356987 - [OpenCL] Allow variadic macros as Clang feature.
Anastasia Stulova via cfe-commits
cfe-commits at lists.llvm.org
Tue Mar 26 04:22:37 PDT 2019
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 at -4{{variadic macros are a Clang extension in OpenCL}}
+// expected-warning at -4{{variadic macros are a Clang extension in OpenCL}}
+// expected-warning at -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);
+}
More information about the cfe-commits
mailing list