yaxunl marked 7 inline comments as done. ================ Comment at: lib/Frontend/InitPreprocessor.cpp:421 @@ +420,3 @@ + switch (LangOpts.OpenCLVersion) { + case 0: + case 100: ---------------- yaxunl wrote: > pxli168 wrote: > > What is 0 stand for as OpenCLVersion, it seems the default OpenCLVersion if > > we did not pass any -cl-std=CLXX is 100. > > So maybe we did not need this case 0: > There is a test test/Frontend/stdlang.c: > > // RUN: %clang_cc1 -x cl -std=c99 -DOPENCL %s > > With this test, LangOpts.OpenCL is 1 but LangOpts.OpenCLVersion is 0. > > If we all agree that this test is invalid and -x cl can only be compiled with > OpenCL language standard and the default one is OpenCL 1.0, I can fix that > test first and then remove case 0 in this switch. Anastasia,
What's your opinion on this? Should we limit the allowed language standard for cl to OpenCL standard only? Should I diagnose invalid language standard and also add a lit test for that? Thanks. ================ Comment at: lib/Frontend/InitPreprocessor.cpp:439 @@ +438,3 @@ + if (LangOpts.OpenCLVersion >= 110) + Builder.defineMacro("CL_VERSION_1_1", "110"); + if (LangOpts.OpenCLVersion >= 120) ---------------- Anastasia wrote: > yaxunl wrote: > > yaxunl wrote: > > > pxli168 wrote: > > > > These macros maybe need for all cl version, and in the header we should > > > > compare __OPENCL_C_VERSION__ with CL_VERSION_2_0 instead of the > > > > integer 200 in the header of http://reviews.llvm.org/D18369? > > > Each OpenCL version only defines some of these macros by spec. > > > > > > In the header file `__OPENCL_C_VERSION__` can compare with 200 since the > > > spec defines the integer value for `__OPENCL_C_VERSION__`. Comparing with > > > CL_VERSION_2_0 requires checking CL_VERSION_2_0 is available first. I > > > think probably I can define a macro > > > > > > #define _OPENCL20_AND_ABOVE defined(__OPENCL_C_VERSION__) and > > > defined(CL_VERSION_2_0) and __OPENCL_C_VERSION__ >= 200 > > > > > > and then use this macro for conditioning 2.0 specific functions. > > should be > > > > #if defined(__OPENCL_C_VERSION__) && defined(CL_VERSION_2_0) && > > __OPENCL_C_VERSION__ >= CL_VERSION_2_0 > > #define _CL20_AND_ABOVE 1 > > #endif > > > Where do you plan to add this code? > > My point is that the code is a bit complicated and messy with this checks and > on the other hand it's kind of logical that compiler supporting all CL > version would also accept all CL_VERSION_X_Y macros irrespectively from the > passed -cl-std flag... I don't think spec is being that explicit on how CL2.0 > compliant compiler should enable those macros when earlier versions of > -cl-std are being passed. OK I will add these macros. http://reviews.llvm.org/D19071 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits