Would help to actually attach the thing. Is the patch to lldb good? It's not really important for me - I just didn't want to add warnings to the lldb build.
(this time adding cfe commits) On Fri, 19 Jun 2015 at 08:23 Pedro Ferreira <arkang...@gmail.com> wrote: > Attached the patch after "svn diff --diff-cmd=diff -x-U0 | > clang-format-diff.py -i" > > On the file you mentioned (Type.h), further up there was already a line > with over 80 characters - the limit was exceeded by the comment, so I > figured that comments were an exemption. > FWIW, the line is "bool isObjCIndependentClassType() const; // > __attribute__((objc_independent_class))", which is 91 characters long. > > On Fri, 19 Jun 2015 at 04:32 Richard Smith <rich...@metafoo.co.uk> wrote: > >> On Thu, Jun 18, 2015 at 5:41 PM, Eric Christopher <echri...@gmail.com> >> wrote: >> >>> Please run clang-format on your patch. You still have lines over >>> 80-columns for example. >>> >> + bool isImage2dDepthT() const; // Opencl >> image_2d_depth_t >> + bool isImage2dArrayDepthT() const; // Opencl >> image_2d_array_depth_t >> + bool isImage2dMSAAT() const; // Opencl image_2d_msaa_t >> + bool isImage2dArrayMSAAT() const; // Opencl >> image_2d_array_msaa_t >> + bool isImage2dMSAATDepth() const; // Opencl >> image_2d_msaa_depth_t >> + bool isImage2dArrayMSAATDepth() const; // Opencl >> image_2d_array_msaa_depth_t >> >> Here's an example of an over-80-columns line. Please also fix the >> capitalization to "OpenCL" here to match the surrounding code. >> >>> Thanks. >>> >>> -eric >>> >>> On Wed, Jun 17, 2015, 7:38 AM Pedro Ferreira <arkang...@gmail.com> >>> wrote: >>> >>>> Updated from head SVN - no conflicts. >>>> Still runs without failures. >>>> >>>> >>>> On Wed, 17 Jun 2015 at 15:08 Pedro Ferreira <arkang...@gmail.com> >>>> wrote: >>>> >>>>> Sorry, that was my bad. I forgot to set my editor back to llvm >>>>> indentation settings and it inserted tabs instead of spaces. >>>>> >>>>> Line 1000 of SemaTypes is 79 characters long, which is the largest >>>>> (longest) line in the patch. It is the same length of line 981 from where >>>>> I >>>>> copy-pasted the code (by your suggestion). >>>>> >>>>> Grep claims the attached patch has no tabs now :) >>>>> >>>>> On Wed, 17 Jun 2015 at 14:47 Anastasia Stulova < >>>>> anastasia.stul...@arm.com> wrote: >>>>> >>>>>> I think there are still lines that are too long (especially in >>>>>> SemaType.cpp). Have you run clang-format on your changes? >>>>>> >>>>>> >>>>>> >>>>>> Otherwise, no further comments from my side. >>>>>> >>>>>> >>>>>> >>>>>> Anastasia >>>>>> >>>>>> >>>>>> >>>>>> *From:* Pedro Ferreira [mailto:arkang...@gmail.com] >>>>>> *Sent:* 15 June 2015 09:16 >>>>>> *To:* Eric Christopher; Anastasia Stulova; cfe-commits@cs.uiuc.edu >>>>>> >>>>>> >>>>>> *Subject:* Re: [PATCH] OpenCL: Add new types for OpenCL 2.0 >>>>>> >>>>>> >>>>>> >>>>>> There were a couple lines with > 80 columns, and this new patch >>>>>> version fixes them. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Fri, 12 Jun 2015 at 21:03 Eric Christopher <echri...@gmail.com> >>>>>> wrote: >>>>>> >>>>>> Drive by review here. >>>>>> >>>>>> >>>>>> >>>>>> I was making sure there was debug info support for the bits, thanks >>>>>> for adding it though I'm not seeing any tests ;) >>>>>> >>>>>> >>>>>> >>>>>> I'm pretty sure you have some 80-column violations and other >>>>>> formatting things, could you clang-format your patch? >>>>>> >>>>>> >>>>>> >>>>>> Thanks! >>>>>> >>>>>> >>>>>> >>>>>> -eric >>>>>> >>>>>> On Fri, Jun 12, 2015 at 4:20 AM Pedro Ferreira <arkang...@gmail.com> >>>>>> wrote: >>>>>> >>>>>> Awesome, thanks for the tips. >>>>>> Updated version attached. >>>>>> >>>>>> >>>>>> >>>>>> Pedro >>>>>> >>>>>> >>>>>> >>>>>> On Thu, 11 Jun 2015 at 19:23 Anastasia Stulova < >>>>>> anastasia.stul...@arm.com> wrote: >>>>>> >>>>>> CodeGen tests looks good! >>>>>> >>>>>> Regarding the extension, could you diagnose it during the type >>>>>> checking instead. That way it will be cover all cases. You can look at >>>>>> the >>>>>> CL2.0 atomic type implementation in SemaType.cpp ConvertDeclSpecToType. >>>>>> Also please reuse the same error err_type_requires_extension instead of >>>>>> adding the new one. Please, add Sema test demonstating the error handling >>>>>> works correctly. >>>>>> >>>>>> Thanks, >>>>>> Anastasia >>>>>> ________________________________________ >>>>>> From: Pedro Ferreira [arkang...@gmail.com] >>>>>> Sent: Thursday, June 11, 2015 12:50 PM >>>>>> To: Anastasia Stulova; cfe-commits@cs.uiuc.edu >>>>>> Subject: Re: [PATCH] OpenCL: Add new types for OpenCL 2.0 >>>>>> >>>>>> Ok, found out the right place to diagnose the extension and added the >>>>>> tests. >>>>>> I am not particularly convinced that was the best way to do it; >>>>>> comments welcome. >>>>>> >>>>>> Pedro >>>>>> >>>>>> On Thu, 11 Jun 2015 at 11:43 Pedro Ferreira <arkang...@gmail.com >>>>>> <mailto:arkang...@gmail.com>> wrote: >>>>>> Actually, I spoke too soon - I found a test with -cl-std=CL2.0. I >>>>>> missed that. >>>>>> >>>>>> On Thu, 11 Jun 2015 at 11:40 Pedro Ferreira <arkang...@gmail.com >>>>>> <mailto:arkang...@gmail.com>> wrote: >>>>>> The codegen test would imply adding a -cl-std=2.0 option to Clang, >>>>>> which it currently does not have. This is because the types should only >>>>>> be >>>>>> recognised if the CL 2.0 standard is explicitly asked for (the default is >>>>>> to operate on 1.2 mode). Adding that option is a peripheral issue. I've >>>>>> added the types on the header test under the appropriate "#if defined" >>>>>> but >>>>>> when I tried to do the same on the .cl file, I found out that the test >>>>>> parser does not recognise the preprocessor macro and therefore was >>>>>> causing >>>>>> the test to (incorrectly) fail. As such, I reverted the test. >>>>>> >>>>>> As for the AS for the other types, I copy-pasted the code from >>>>>> event_t. That's the reason why I'm actually using the "0". Are you >>>>>> suggesting I should change event_t to use something else, and by >>>>>> consequence the new types too? That would be a separate issue. >>>>>> My guess is that these types are allocated on the stack, which by >>>>>> llvm convention will always be 0. >>>>>> >>>>>> The new types are used by new builtins. I don't think there are any >>>>>> other special semantics to it. >>>>>> >>>>>> I've added extension checks on the MSAA types, but I'm not sure if >>>>>> this is the right place. New patch attached. >>>>>> >>>>>> Pedro >>>>>> >>>>>> On Thu, 11 Jun 2015 at 10:33 Anastasia Stulova < >>>>>> anastasia.stul...@arm.com<mailto:anastasia.stul...@arm.com>> wrote: >>>>>> Hi Pedro, >>>>>> >>>>>> Could we also add a Codegen test? Also it would be better not to use >>>>>> constant directly as address space as the mapping could ideally be >>>>>> changed. >>>>>> Is there any reason why you generate pointers to private AS? >>>>>> >>>>>> Are there any operations allowed on new types? Any semantical checks >>>>>> needed? >>>>>> >>>>>> If MSAA types are part of an extension and not a part of the general >>>>>> standard we should ideally diagnose that extension is enabled when they >>>>>> are >>>>>> being used. >>>>>> >>>>>> Regards, >>>>>> Anastasia >>>>>> ________________________________________ >>>>>> From: cfe-commits-boun...@cs.uiuc.edu<mailto: >>>>>> cfe-commits-boun...@cs.uiuc.edu> [cfe-commits-boun...@cs.uiuc.edu >>>>>> <mailto:cfe-commits-boun...@cs.uiuc.edu>] On Behalf Of Pedro >>>>>> Ferreira [arkang...@gmail.com<mailto:arkang...@gmail.com>] >>>>>> Sent: Thursday, June 11, 2015 8:18 AM >>>>>> To: cfe-commits@cs.uiuc.edu<mailto:cfe-commits@cs.uiuc.edu> >>>>>> Subject: [PATCH] OpenCL: Add new types for OpenCL 2.0 >>>>>> >>>>>> Hi all, >>>>>> >>>>>> This patch adds the new OpenCL types for 2.0 described at >>>>>> https://www.khronos.org/registry/cl/sdk/2.0/docs/man/xhtml/otherDataTypes.html >>>>>> <https://urldefense.proofpoint.com/v2/url?u=https-3A__www.khronos.org_registry_cl_sdk_2.0_docs_man_xhtml_otherDataTypes.html&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=9Bdb39VF2l8sby_fS5dvbUnJSVMkbUEkua5v-UqAuGY&s=5Dqa4a6V-GRZkKn3l59ia5wJtJJzBqEjUrQlOV-8t-w&e=> >>>>>> < >>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.khronos.org_registry_cl_sdk_2.0_docs_man_xhtml_otherDataTypes.html&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=42YnWExwxwpeU6GPDY2_3RFxCqQakUbj_CXZsMsQ2jU&s=REOBNoaDio7qDyIDCqmXhxFvZYjMOK6vuXAttjOVsNI&e= >>>>>> > >>>>>> I also opened https://llvm.org/bugs/show_bug.cgi?id=23794 >>>>>> <https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_bugs_show-5Fbug.cgi-3Fid-3D23794&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=9Bdb39VF2l8sby_fS5dvbUnJSVMkbUEkua5v-UqAuGY&s=DaxUQk4vxUwKYs93ZTAVu1S6Hdg2CQ1J96KmGJWtfDg&e=> >>>>>> < >>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__llvm.org_bugs_show-5Fbug.cgi-3Fid-3D23794&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=42YnWExwxwpeU6GPDY2_3RFxCqQakUbj_CXZsMsQ2jU&s=TAV4suAMaHgdIPA83Da3pQl7c68On7bAFWtnrUbt_Uk&e=> >>>>>> for this. I keep forgetting you prefer patches sent to this mailing list. >>>>>> This also adds lldb entries (fixes switch warnings). >>>>>> >>>>>> The types are: >>>>>> >>>>>> image2d_depth_t >>>>>> image2d_array_depth_t >>>>>> image2d_msaa_t >>>>>> image2d_array_msaa_t >>>>>> image2d_msaa_depth_t >>>>>> image2d_array_msaa_depth_t >>>>>> queue_t >>>>>> ndrange_t >>>>>> clk_event_t >>>>>> reserve_id_t >>>>>> >>>>>> let me know if something looks wrong, >>>>>> Pedro >>>>>> >>>>>> -- IMPORTANT NOTICE: The contents of this email and any attachments >>>>>> are confidential and may also be privileged. If you are not the intended >>>>>> recipient, please notify the sender immediately and do not disclose the >>>>>> contents to any other person, use it for any purpose, or store or copy >>>>>> the >>>>>> information in any medium. Thank you. >>>>>> >>>>>> ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, >>>>>> Registered in England & Wales, Company No: 2557590 >>>>>> ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 >>>>>> 9NJ, Registered in England & Wales, Company No: 2548782 >>>>>> >>>>>> >>>>>> -- IMPORTANT NOTICE: The contents of this email and any attachments >>>>>> are confidential and may also be privileged. If you are not the intended >>>>>> recipient, please notify the sender immediately and do not disclose the >>>>>> contents to any other person, use it for any purpose, or store or copy >>>>>> the >>>>>> information in any medium. Thank you. >>>>>> >>>>>> ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, >>>>>> Registered in England & Wales, Company No: 2557590 >>>>>> ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 >>>>>> 9NJ, Registered in England & Wales, Company No: 2548782 >>>>>> >>>>>> _______________________________________________ >>>>>> cfe-commits mailing list >>>>>> cfe-commits@cs.uiuc.edu >>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >>>>>> >>>>>> >>> _______________________________________________ >>> cfe-commits mailing list >>> cfe-commits@cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >>> >>>
Index: include/clang/AST/ASTContext.h =================================================================== --- include/clang/AST/ASTContext.h (revision 240020) +++ include/clang/AST/ASTContext.h (working copy) @@ -829,9 +829,12 @@ CanQualType ObjCBuiltinIdTy, ObjCBuiltinClassTy, ObjCBuiltinSelTy; CanQualType ObjCBuiltinBoolTy; CanQualType OCLImage1dTy, OCLImage1dArrayTy, OCLImage1dBufferTy; - CanQualType OCLImage2dTy, OCLImage2dArrayTy; + CanQualType OCLImage2dTy, OCLImage2dArrayTy, OCLImage2dDepthTy; + CanQualType OCLImage2dArrayDepthTy, OCLImage2dMSAATy, OCLImage2dArrayMSAATy; + CanQualType OCLImage2dMSAADepthTy, OCLImage2dArrayMSAADepthTy; CanQualType OCLImage3dTy; - CanQualType OCLSamplerTy, OCLEventTy; + CanQualType OCLSamplerTy, OCLEventTy, OCLClkEventTy; + CanQualType OCLQueueTy, OCLNDRangeTy, OCLReserveIDTy; // Types for deductions in C++0x [stmt.ranged]'s desugaring. Built on demand. mutable QualType AutoDeductTy; // Deduction against 'auto'. Index: include/clang/AST/BuiltinTypes.def =================================================================== --- include/clang/AST/BuiltinTypes.def (revision 240020) +++ include/clang/AST/BuiltinTypes.def (working copy) @@ -160,6 +160,12 @@ BUILTIN_TYPE(OCLImage1dBuffer, OCLImage1dBufferTy) BUILTIN_TYPE(OCLImage2d, OCLImage2dTy) BUILTIN_TYPE(OCLImage2dArray, OCLImage2dArrayTy) +BUILTIN_TYPE(OCLImage2dDepth, OCLImage2dDepthTy) +BUILTIN_TYPE(OCLImage2dArrayDepth, OCLImage2dArrayDepthTy) +BUILTIN_TYPE(OCLImage2dMSAA, OCLImage2dMSAATy) +BUILTIN_TYPE(OCLImage2dArrayMSAA, OCLImage2dArrayMSAATy) +BUILTIN_TYPE(OCLImage2dMSAADepth, OCLImage2dMSAADepthTy) +BUILTIN_TYPE(OCLImage2dArrayMSAADepth, OCLImage2dArrayMSAADepthTy) BUILTIN_TYPE(OCLImage3d, OCLImage3dTy) // OpenCL sampler_t. @@ -168,6 +174,18 @@ // OpenCL event_t. BUILTIN_TYPE(OCLEvent, OCLEventTy) +// OpenCL clk_event_t. +BUILTIN_TYPE(OCLClkEvent, OCLClkEventTy) + +// OpenCL queue_t. +BUILTIN_TYPE(OCLQueue, OCLQueueTy) + +// OpenCL ndrange_t. +BUILTIN_TYPE(OCLNDRange, OCLNDRangeTy) + +// OpenCL reserve_id_t. +BUILTIN_TYPE(OCLReserveID, OCLReserveIDTy) + // This represents the type of an expression whose type is // totally unknown, e.g. 'T::foo'. It is permitted for this to // appear in situations where the structure of the type is Index: include/clang/AST/Type.h =================================================================== --- include/clang/AST/Type.h (revision 240020) +++ include/clang/AST/Type.h (working copy) @@ -1593,17 +1593,27 @@ bool isNullPtrType() const; // C++0x nullptr_t bool isAtomicType() const; // C11 _Atomic() - bool isImage1dT() const; // OpenCL image1d_t - bool isImage1dArrayT() const; // OpenCL image1d_array_t - bool isImage1dBufferT() const; // OpenCL image1d_buffer_t - bool isImage2dT() const; // OpenCL image2d_t - bool isImage2dArrayT() const; // OpenCL image2d_array_t - bool isImage3dT() const; // OpenCL image3d_t + bool isImage1dT() const; // OpenCL image1d_t + bool isImage1dArrayT() const; // OpenCL image1d_array_t + bool isImage1dBufferT() const; // OpenCL image1d_buffer_t + bool isImage2dT() const; // OpenCL image2d_t + bool isImage2dArrayT() const; // OpenCL image2d_array_t + bool isImage2dDepthT() const; // OpenCL image_2d_depth_t + bool isImage2dArrayDepthT() const; // OpenCL image_2d_array_depth_t + bool isImage2dMSAAT() const; // OpenCL image_2d_msaa_t + bool isImage2dArrayMSAAT() const; // OpenCL image_2d_array_msaa_t + bool isImage2dMSAATDepth() const; // OpenCL image_2d_msaa_depth_t + bool isImage2dArrayMSAATDepth() const; // OpenCL image_2d_array_msaa_depth_t + bool isImage3dT() const; // OpenCL image3d_t bool isImageType() const; // Any OpenCL image type bool isSamplerT() const; // OpenCL sampler_t bool isEventT() const; // OpenCL event_t + bool isClkEventT() const; // OpenCL clk_event_t + bool isQueueT() const; // OpenCL queue_t + bool isNDRangeT() const; // OpenCL ndrange_t + bool isReserveIDT() const; // OpenCL reserve_id_t bool isOpenCLSpecificType() const; // Any OpenCL specific type @@ -5064,6 +5074,30 @@ return isSpecificBuiltinType(BuiltinType::OCLImage2dArray); } +inline bool Type::isImage2dDepthT() const { + return isSpecificBuiltinType(BuiltinType::OCLImage2dDepth); +} + +inline bool Type::isImage2dArrayDepthT() const { + return isSpecificBuiltinType(BuiltinType::OCLImage2dArrayDepth); +} + +inline bool Type::isImage2dMSAAT() const { + return isSpecificBuiltinType(BuiltinType::OCLImage2dMSAA); +} + +inline bool Type::isImage2dArrayMSAAT() const { + return isSpecificBuiltinType(BuiltinType::OCLImage2dArrayMSAA); +} + +inline bool Type::isImage2dMSAATDepth() const { + return isSpecificBuiltinType(BuiltinType::OCLImage2dMSAADepth); +} + +inline bool Type::isImage2dArrayMSAATDepth() const { + return isSpecificBuiltinType(BuiltinType::OCLImage2dArrayMSAADepth); +} + inline bool Type::isImage3dT() const { return isSpecificBuiltinType(BuiltinType::OCLImage3d); } @@ -5076,14 +5110,33 @@ return isSpecificBuiltinType(BuiltinType::OCLEvent); } +inline bool Type::isClkEventT() const { + return isSpecificBuiltinType(BuiltinType::OCLClkEvent); +} + +inline bool Type::isQueueT() const { + return isSpecificBuiltinType(BuiltinType::OCLQueue); +} + +inline bool Type::isNDRangeT() const { + return isSpecificBuiltinType(BuiltinType::OCLNDRange); +} + +inline bool Type::isReserveIDT() const { + return isSpecificBuiltinType(BuiltinType::OCLReserveID); +} + inline bool Type::isImageType() const { - return isImage3dT() || - isImage2dT() || isImage2dArrayT() || - isImage1dT() || isImage1dArrayT() || isImage1dBufferT(); + return isImage3dT() || isImage2dT() || isImage2dArrayT() || + isImage2dDepthT() || isImage2dArrayDepthT() || isImage2dMSAAT() || + isImage2dArrayMSAAT() || isImage2dMSAATDepth() || + isImage2dArrayMSAATDepth() || isImage1dT() || isImage1dArrayT() || + isImage1dBufferT(); } inline bool Type::isOpenCLSpecificType() const { - return isSamplerT() || isEventT() || isImageType(); + return isSamplerT() || isEventT() || isImageType() || isClkEventT() || + isQueueT() || isNDRangeT() || isReserveIDT(); } inline bool Type::isTemplateTypeParmType() const { Index: include/clang/Basic/OpenCLExtensions.def =================================================================== --- include/clang/Basic/OpenCLExtensions.def (revision 240020) +++ include/clang/Basic/OpenCLExtensions.def (working copy) @@ -26,6 +26,9 @@ OPENCLEXT(cl_khr_byte_addressable_store) OPENCLEXT(cl_khr_3d_image_writes) +// OpenCL 2.0 +OPENCLEXT(cl_khr_gl_msaa_sharing) + // Clang Extensions. OPENCLEXT(cl_clang_storage_class_specifiers) Index: include/clang/Serialization/ASTBitCodes.h =================================================================== --- include/clang/Serialization/ASTBitCodes.h (revision 240020) +++ include/clang/Serialization/ASTBitCodes.h (working copy) @@ -687,73 +687,73 @@ /// by the AST context when it is created. enum PredefinedTypeIDs { /// \brief The NULL type. - PREDEF_TYPE_NULL_ID = 0, + PREDEF_TYPE_NULL_ID = 0, /// \brief The void type. - PREDEF_TYPE_VOID_ID = 1, + PREDEF_TYPE_VOID_ID = 1, /// \brief The 'bool' or '_Bool' type. - PREDEF_TYPE_BOOL_ID = 2, + PREDEF_TYPE_BOOL_ID = 2, /// \brief The 'char' type, when it is unsigned. - PREDEF_TYPE_CHAR_U_ID = 3, + PREDEF_TYPE_CHAR_U_ID = 3, /// \brief The 'unsigned char' type. - PREDEF_TYPE_UCHAR_ID = 4, + PREDEF_TYPE_UCHAR_ID = 4, /// \brief The 'unsigned short' type. - PREDEF_TYPE_USHORT_ID = 5, + PREDEF_TYPE_USHORT_ID = 5, /// \brief The 'unsigned int' type. - PREDEF_TYPE_UINT_ID = 6, + PREDEF_TYPE_UINT_ID = 6, /// \brief The 'unsigned long' type. - PREDEF_TYPE_ULONG_ID = 7, + PREDEF_TYPE_ULONG_ID = 7, /// \brief The 'unsigned long long' type. - PREDEF_TYPE_ULONGLONG_ID = 8, + PREDEF_TYPE_ULONGLONG_ID = 8, /// \brief The 'char' type, when it is signed. - PREDEF_TYPE_CHAR_S_ID = 9, + PREDEF_TYPE_CHAR_S_ID = 9, /// \brief The 'signed char' type. - PREDEF_TYPE_SCHAR_ID = 10, + PREDEF_TYPE_SCHAR_ID = 10, /// \brief The C++ 'wchar_t' type. - PREDEF_TYPE_WCHAR_ID = 11, + PREDEF_TYPE_WCHAR_ID = 11, /// \brief The (signed) 'short' type. - PREDEF_TYPE_SHORT_ID = 12, + PREDEF_TYPE_SHORT_ID = 12, /// \brief The (signed) 'int' type. - PREDEF_TYPE_INT_ID = 13, + PREDEF_TYPE_INT_ID = 13, /// \brief The (signed) 'long' type. - PREDEF_TYPE_LONG_ID = 14, + PREDEF_TYPE_LONG_ID = 14, /// \brief The (signed) 'long long' type. - PREDEF_TYPE_LONGLONG_ID = 15, + PREDEF_TYPE_LONGLONG_ID = 15, /// \brief The 'float' type. - PREDEF_TYPE_FLOAT_ID = 16, + PREDEF_TYPE_FLOAT_ID = 16, /// \brief The 'double' type. - PREDEF_TYPE_DOUBLE_ID = 17, + PREDEF_TYPE_DOUBLE_ID = 17, /// \brief The 'long double' type. PREDEF_TYPE_LONGDOUBLE_ID = 18, /// \brief The placeholder type for overloaded function sets. - PREDEF_TYPE_OVERLOAD_ID = 19, + PREDEF_TYPE_OVERLOAD_ID = 19, /// \brief The placeholder type for dependent types. - PREDEF_TYPE_DEPENDENT_ID = 20, + PREDEF_TYPE_DEPENDENT_ID = 20, /// \brief The '__uint128_t' type. - PREDEF_TYPE_UINT128_ID = 21, + PREDEF_TYPE_UINT128_ID = 21, /// \brief The '__int128_t' type. - PREDEF_TYPE_INT128_ID = 22, + PREDEF_TYPE_INT128_ID = 22, /// \brief The type of 'nullptr'. - PREDEF_TYPE_NULLPTR_ID = 23, + PREDEF_TYPE_NULLPTR_ID = 23, /// \brief The C++ 'char16_t' type. - PREDEF_TYPE_CHAR16_ID = 24, + PREDEF_TYPE_CHAR16_ID = 24, /// \brief The C++ 'char32_t' type. - PREDEF_TYPE_CHAR32_ID = 25, + PREDEF_TYPE_CHAR32_ID = 25, /// \brief The ObjC 'id' type. - PREDEF_TYPE_OBJC_ID = 26, + PREDEF_TYPE_OBJC_ID = 26, /// \brief The ObjC 'Class' type. - PREDEF_TYPE_OBJC_CLASS = 27, + PREDEF_TYPE_OBJC_CLASS = 27, /// \brief The ObjC 'SEL' type. - PREDEF_TYPE_OBJC_SEL = 28, + PREDEF_TYPE_OBJC_SEL = 28, /// \brief The 'unknown any' placeholder type. - PREDEF_TYPE_UNKNOWN_ANY = 29, + PREDEF_TYPE_UNKNOWN_ANY = 29, /// \brief The placeholder type for bound member functions. - PREDEF_TYPE_BOUND_MEMBER = 30, + PREDEF_TYPE_BOUND_MEMBER = 30, /// \brief The "auto" deduction type. - PREDEF_TYPE_AUTO_DEDUCT = 31, + PREDEF_TYPE_AUTO_DEDUCT = 31, /// \brief The "auto &&" deduction type. PREDEF_TYPE_AUTO_RREF_DEDUCT = 32, /// \brief The OpenCL 'half' / ARM NEON __fp16 type. - PREDEF_TYPE_HALF_ID = 33, + PREDEF_TYPE_HALF_ID = 33, /// \brief ARC's unbridged-cast placeholder type. PREDEF_TYPE_ARC_UNBRIDGED_CAST = 34, /// \brief The pseudo-object placeholder type. @@ -763,21 +763,41 @@ /// \brief The placeholder type for builtin functions. PREDEF_TYPE_BUILTIN_FN = 37, /// \brief OpenCL 1d image type. - PREDEF_TYPE_IMAGE1D_ID = 38, + PREDEF_TYPE_IMAGE1D_ID = 38, /// \brief OpenCL 1d image array type. PREDEF_TYPE_IMAGE1D_ARR_ID = 39, /// \brief OpenCL 1d image buffer type. PREDEF_TYPE_IMAGE1D_BUFF_ID = 40, /// \brief OpenCL 2d image type. - PREDEF_TYPE_IMAGE2D_ID = 41, + PREDEF_TYPE_IMAGE2D_ID = 41, /// \brief OpenCL 2d image array type. PREDEF_TYPE_IMAGE2D_ARR_ID = 42, + /// \brief OpenCL 2d image depth type. + PREDEF_TYPE_IMAGE2D_DEP_ID = 43, + /// \brief OpenCL 2d image array depth type. + PREDEF_TYPE_IMAGE2D_ARR_DEP_ID = 44, + /// \brief OpenCL 2d image MSAA type. + PREDEF_TYPE_IMAGE2D_MSAA_ID = 45, + /// \brief OpenCL 2d image array MSAA type. + PREDEF_TYPE_IMAGE2D_ARR_MSAA_ID = 46, + /// \brief OpenCL 2d image MSAA depth type. + PREDEF_TYPE_IMAGE2D_MSAA_DEP_ID = 47, + /// \brief OpenCL 2d image array MSAA depth type. + PREDEF_TYPE_IMAGE2D_ARR_MSAA_DEPTH_ID = 48, /// \brief OpenCL 3d image type. - PREDEF_TYPE_IMAGE3D_ID = 43, + PREDEF_TYPE_IMAGE3D_ID = 49, /// \brief OpenCL event type. - PREDEF_TYPE_EVENT_ID = 44, + PREDEF_TYPE_EVENT_ID = 50, + /// \brief OpenCL clk event type. + PREDEF_TYPE_CLK_EVENT_ID = 51, /// \brief OpenCL sampler type. - PREDEF_TYPE_SAMPLER_ID = 45 + PREDEF_TYPE_SAMPLER_ID = 52, + /// \brief OpenCL queue type. + PREDEF_TYPE_QUEUE_ID = 53, + /// \brief OpenCL ndrange type. + PREDEF_TYPE_NDRANGE_ID = 54, + /// \brief OpenCL reserve_id type. + PREDEF_TYPE_RESERVE_ID_ID = 55 }; /// \brief The number of predefined type IDs that are reserved for Index: lib/AST/ASTContext.cpp =================================================================== --- lib/AST/ASTContext.cpp (revision 240020) +++ lib/AST/ASTContext.cpp (working copy) @@ -1059,10 +1059,21 @@ InitBuiltinType(OCLImage1dBufferTy, BuiltinType::OCLImage1dBuffer); InitBuiltinType(OCLImage2dTy, BuiltinType::OCLImage2d); InitBuiltinType(OCLImage2dArrayTy, BuiltinType::OCLImage2dArray); + InitBuiltinType(OCLImage2dDepthTy, BuiltinType::OCLImage2dDepth); + InitBuiltinType(OCLImage2dArrayDepthTy, BuiltinType::OCLImage2dArrayDepth); + InitBuiltinType(OCLImage2dMSAATy, BuiltinType::OCLImage2dMSAA); + InitBuiltinType(OCLImage2dArrayMSAATy, BuiltinType::OCLImage2dArrayMSAA); + InitBuiltinType(OCLImage2dMSAADepthTy, BuiltinType::OCLImage2dMSAADepth); + InitBuiltinType(OCLImage2dArrayMSAADepthTy, + BuiltinType::OCLImage2dArrayMSAADepth); InitBuiltinType(OCLImage3dTy, BuiltinType::OCLImage3d); InitBuiltinType(OCLSamplerTy, BuiltinType::OCLSampler); InitBuiltinType(OCLEventTy, BuiltinType::OCLEvent); + InitBuiltinType(OCLClkEventTy, BuiltinType::OCLClkEvent); + InitBuiltinType(OCLQueueTy, BuiltinType::OCLQueue); + InitBuiltinType(OCLNDRangeTy, BuiltinType::OCLNDRange); + InitBuiltinType(OCLReserveIDTy, BuiltinType::OCLReserveID); } // Builtin type for __objc_yes and __objc_no @@ -1629,11 +1640,21 @@ Align = Target->getIntAlign(); break; case BuiltinType::OCLEvent: + case BuiltinType::OCLClkEvent: + case BuiltinType::OCLQueue: + case BuiltinType::OCLNDRange: + case BuiltinType::OCLReserveID: case BuiltinType::OCLImage1d: case BuiltinType::OCLImage1dArray: case BuiltinType::OCLImage1dBuffer: case BuiltinType::OCLImage2d: case BuiltinType::OCLImage2dArray: + case BuiltinType::OCLImage2dDepth: + case BuiltinType::OCLImage2dArrayDepth: + case BuiltinType::OCLImage2dMSAA: + case BuiltinType::OCLImage2dArrayMSAA: + case BuiltinType::OCLImage2dMSAADepth: + case BuiltinType::OCLImage2dArrayMSAADepth: case BuiltinType::OCLImage3d: // Currently these types are pointers to opaque types. Width = Target->getPointerWidth(0); @@ -5303,8 +5324,18 @@ case BuiltinType::OCLImage1dBuffer: case BuiltinType::OCLImage2d: case BuiltinType::OCLImage2dArray: + case BuiltinType::OCLImage2dDepth: + case BuiltinType::OCLImage2dArrayDepth: + case BuiltinType::OCLImage2dMSAA: + case BuiltinType::OCLImage2dArrayMSAA: + case BuiltinType::OCLImage2dMSAADepth: + case BuiltinType::OCLImage2dArrayMSAADepth: case BuiltinType::OCLImage3d: case BuiltinType::OCLEvent: + case BuiltinType::OCLClkEvent: + case BuiltinType::OCLQueue: + case BuiltinType::OCLNDRange: + case BuiltinType::OCLReserveID: case BuiltinType::OCLSampler: case BuiltinType::Dependent: #define BUILTIN_TYPE(KIND, ID) Index: lib/AST/ItaniumMangle.cpp =================================================================== --- lib/AST/ItaniumMangle.cpp (revision 240020) +++ lib/AST/ItaniumMangle.cpp (working copy) @@ -2031,9 +2031,39 @@ case BuiltinType::OCLImage1dBuffer: Out << "17ocl_image1dbuffer"; break; case BuiltinType::OCLImage2d: Out << "11ocl_image2d"; break; case BuiltinType::OCLImage2dArray: Out << "16ocl_image2darray"; break; + case BuiltinType::OCLImage2dDepth: + Out << "16ocl_image2ddepth"; + break; + case BuiltinType::OCLImage2dArrayDepth: + Out << "21ocl_image2darraydepth"; + break; + case BuiltinType::OCLImage2dMSAA: + Out << "15ocl_image2dmsaa"; + break; + case BuiltinType::OCLImage2dArrayMSAA: + Out << "20ocl_image2darraymsaa"; + break; + case BuiltinType::OCLImage2dMSAADepth: + Out << "20ocl_image2dmsaadepth"; + break; + case BuiltinType::OCLImage2dArrayMSAADepth: + Out << "35ocl_image2darraymsaadepth"; + break; case BuiltinType::OCLImage3d: Out << "11ocl_image3d"; break; case BuiltinType::OCLSampler: Out << "11ocl_sampler"; break; case BuiltinType::OCLEvent: Out << "9ocl_event"; break; + case BuiltinType::OCLClkEvent: + Out << "12ocl_clkevent"; + break; + case BuiltinType::OCLQueue: + Out << "9ocl_queue"; + break; + case BuiltinType::OCLNDRange: + Out << "11ocl_ndrange"; + break; + case BuiltinType::OCLReserveID: + Out << "13ocl_reserveid"; + break; } } Index: lib/AST/MicrosoftMangle.cpp =================================================================== --- lib/AST/MicrosoftMangle.cpp (revision 240020) +++ lib/AST/MicrosoftMangle.cpp (working copy) @@ -1564,9 +1564,39 @@ case BuiltinType::OCLImage1dBuffer: Out << "PAUocl_image1dbuffer@@"; break; case BuiltinType::OCLImage2d: Out << "PAUocl_image2d@@"; break; case BuiltinType::OCLImage2dArray: Out << "PAUocl_image2darray@@"; break; + case BuiltinType::OCLImage2dDepth: + Out << "PAUocl_image2ddepth@@"; + break; + case BuiltinType::OCLImage2dArrayDepth: + Out << "PAUocl_image2darraydepth@@"; + break; + case BuiltinType::OCLImage2dMSAA: + Out << "PAUocl_image2dmsaa@@"; + break; + case BuiltinType::OCLImage2dArrayMSAA: + Out << "PAUocl_image2darraymsaa@@"; + break; + case BuiltinType::OCLImage2dMSAADepth: + Out << "PAUocl_image2dmsaadepth@@"; + break; + case BuiltinType::OCLImage2dArrayMSAADepth: + Out << "PAUocl_image2darraymsaadepth@@"; + break; case BuiltinType::OCLImage3d: Out << "PAUocl_image3d@@"; break; case BuiltinType::OCLSampler: Out << "PAUocl_sampler@@"; break; case BuiltinType::OCLEvent: Out << "PAUocl_event@@"; break; + case BuiltinType::OCLClkEvent: + Out << "PAUocl_clkevent@@"; + break; + case BuiltinType::OCLQueue: + Out << "PAUocl_queue@@"; + break; + case BuiltinType::OCLNDRange: + Out << "PAUocl_ndrange@@"; + break; + case BuiltinType::OCLReserveID: + Out << "PAUocl_reserveid@@"; + break; case BuiltinType::NullPtr: Out << "$$T"; break; Index: lib/AST/NSAPI.cpp =================================================================== --- lib/AST/NSAPI.cpp (revision 240020) +++ lib/AST/NSAPI.cpp (working copy) @@ -449,9 +449,19 @@ case BuiltinType::OCLImage1dBuffer: case BuiltinType::OCLImage2d: case BuiltinType::OCLImage2dArray: + case BuiltinType::OCLImage2dDepth: + case BuiltinType::OCLImage2dArrayDepth: + case BuiltinType::OCLImage2dMSAA: + case BuiltinType::OCLImage2dArrayMSAA: + case BuiltinType::OCLImage2dMSAADepth: + case BuiltinType::OCLImage2dArrayMSAADepth: case BuiltinType::OCLImage3d: case BuiltinType::OCLSampler: case BuiltinType::OCLEvent: + case BuiltinType::OCLClkEvent: + case BuiltinType::OCLQueue: + case BuiltinType::OCLNDRange: + case BuiltinType::OCLReserveID: case BuiltinType::BoundMember: case BuiltinType::Dependent: case BuiltinType::Overload: Index: lib/AST/Type.cpp =================================================================== --- lib/AST/Type.cpp (revision 240020) +++ lib/AST/Type.cpp (working copy) @@ -1543,9 +1543,29 @@ case OCLImage1dBuffer: return "image1d_buffer_t"; case OCLImage2d: return "image2d_t"; case OCLImage2dArray: return "image2d_array_t"; + case OCLImage2dDepth: + return "image2d_depth_t"; + case OCLImage2dArrayDepth: + return "image2d_array_depth_t"; + case OCLImage2dMSAA: + return "image2d_msaa_t"; + case OCLImage2dArrayMSAA: + return "image2d_array_msaa_t"; + case OCLImage2dMSAADepth: + return "image2d_msaa_depth_t"; + case OCLImage2dArrayMSAADepth: + return "image2d_array_msaa_depth_t"; case OCLImage3d: return "image3d_t"; case OCLSampler: return "sampler_t"; case OCLEvent: return "event_t"; + case OCLClkEvent: + return "clk_event_t"; + case OCLQueue: + return "queue_t"; + case OCLNDRange: + return "event_t"; + case OCLReserveID: + return "reserve_id_t"; } llvm_unreachable("Invalid builtin type."); Index: lib/AST/TypeLoc.cpp =================================================================== --- lib/AST/TypeLoc.cpp (revision 240020) +++ lib/AST/TypeLoc.cpp (working copy) @@ -296,9 +296,19 @@ case BuiltinType::OCLImage1dBuffer: case BuiltinType::OCLImage2d: case BuiltinType::OCLImage2dArray: + case BuiltinType::OCLImage2dDepth: + case BuiltinType::OCLImage2dArrayDepth: + case BuiltinType::OCLImage2dMSAA: + case BuiltinType::OCLImage2dArrayMSAA: + case BuiltinType::OCLImage2dMSAADepth: + case BuiltinType::OCLImage2dArrayMSAADepth: case BuiltinType::OCLImage3d: case BuiltinType::OCLSampler: case BuiltinType::OCLEvent: + case BuiltinType::OCLClkEvent: + case BuiltinType::OCLQueue: + case BuiltinType::OCLNDRange: + case BuiltinType::OCLReserveID: case BuiltinType::BuiltinFn: return TST_unspecified; } Index: lib/CodeGen/CGDebugInfo.cpp =================================================================== --- lib/CodeGen/CGDebugInfo.cpp (revision 240020) +++ lib/CodeGen/CGDebugInfo.cpp (working copy) @@ -453,6 +453,24 @@ case BuiltinType::OCLImage2dArray: return getOrCreateStructPtrType("opencl_image2d_array_t", OCLImage2dArrayDITy); + case BuiltinType::OCLImage2dDepth: + return getOrCreateStructPtrType("opencl_image2d_depth_t", + OCLImage2dDepthDITy); + case BuiltinType::OCLImage2dArrayDepth: + return getOrCreateStructPtrType("opencl_image2d_array_depth_t", + OCLImage2dArrayDepthDITy); + case BuiltinType::OCLImage2dMSAA: + return getOrCreateStructPtrType("opencl_image2d_msaa_t", + OCLImage2dMSAADITy); + case BuiltinType::OCLImage2dArrayMSAA: + return getOrCreateStructPtrType("opencl_image2d_array_msaa_t", + OCLImage2dArrayMSAADITy); + case BuiltinType::OCLImage2dMSAADepth: + return getOrCreateStructPtrType("opencl_image2d_msaa_depth_t", + OCLImage2dMSAADepthDITy); + case BuiltinType::OCLImage2dArrayMSAADepth: + return getOrCreateStructPtrType("opencl_image2d_array_msaa_depth_t", + OCLImage2dArrayMSAADepthDITy); case BuiltinType::OCLImage3d: return getOrCreateStructPtrType("opencl_image3d_t", OCLImage3dDITy); case BuiltinType::OCLSampler: @@ -461,6 +479,14 @@ CGM.getContext().getTypeAlign(BT), llvm::dwarf::DW_ATE_unsigned); case BuiltinType::OCLEvent: return getOrCreateStructPtrType("opencl_event_t", OCLEventDITy); + case BuiltinType::OCLClkEvent: + return getOrCreateStructPtrType("opencl_clk_event_t", OCLClkEventDITy); + case BuiltinType::OCLQueue: + return getOrCreateStructPtrType("opencl_queue_t", OCLQueueDITy); + case BuiltinType::OCLNDRange: + return getOrCreateStructPtrType("opencl_ndrange_t", OCLNDRangeDITy); + case BuiltinType::OCLReserveID: + return getOrCreateStructPtrType("opencl_reserve_id_t", OCLReserveIDDITy); case BuiltinType::UChar: case BuiltinType::Char_U: Index: lib/CodeGen/CGDebugInfo.h =================================================================== --- lib/CodeGen/CGDebugInfo.h (revision 240020) +++ lib/CodeGen/CGDebugInfo.h (working copy) @@ -63,8 +63,18 @@ llvm::DIType *OCLImage1dBufferDITy = nullptr; llvm::DIType *OCLImage2dDITy = nullptr; llvm::DIType *OCLImage2dArrayDITy = nullptr; + llvm::DIType *OCLImage2dDepthDITy = nullptr; + llvm::DIType *OCLImage2dArrayDepthDITy = nullptr; + llvm::DIType *OCLImage2dMSAADITy = nullptr; + llvm::DIType *OCLImage2dArrayMSAADITy = nullptr; + llvm::DIType *OCLImage2dMSAADepthDITy = nullptr; + llvm::DIType *OCLImage2dArrayMSAADepthDITy = nullptr; llvm::DIType *OCLImage3dDITy = nullptr; llvm::DIType *OCLEventDITy = nullptr; + llvm::DIType *OCLClkEventDITy = nullptr; + llvm::DIType *OCLQueueDITy = nullptr; + llvm::DIType *OCLNDRangeDITy = nullptr; + llvm::DIType *OCLReserveIDDITy = nullptr; llvm::DIType *BlockLiteralGeneric = nullptr; /// \brief Cache of previously constructed Types. Index: lib/CodeGen/CGOpenCLRuntime.cpp =================================================================== --- lib/CodeGen/CGOpenCLRuntime.cpp (revision 240020) +++ lib/CodeGen/CGOpenCLRuntime.cpp (working copy) @@ -55,6 +55,28 @@ case BuiltinType::OCLImage2dArray: return llvm::PointerType::get(llvm::StructType::create( Ctx, "opencl.image2d_array_t"), ImgAddrSpc); + case BuiltinType::OCLImage2dDepth: + return llvm::PointerType::get( + llvm::StructType::create(Ctx, "opencl.image2d_depth_t"), ImgAddrSpc); + case BuiltinType::OCLImage2dArrayDepth: + return llvm::PointerType::get( + llvm::StructType::create(Ctx, "opencl.image2d_array_depth_t"), + ImgAddrSpc); + case BuiltinType::OCLImage2dMSAA: + return llvm::PointerType::get( + llvm::StructType::create(Ctx, "opencl.image2d_msaa_t"), ImgAddrSpc); + case BuiltinType::OCLImage2dArrayMSAA: + return llvm::PointerType::get( + llvm::StructType::create(Ctx, "opencl.image2d_array_msaa_t"), + ImgAddrSpc); + case BuiltinType::OCLImage2dMSAADepth: + return llvm::PointerType::get( + llvm::StructType::create(Ctx, "opencl.image2d_msaa_depth_t"), + ImgAddrSpc); + case BuiltinType::OCLImage2dArrayMSAADepth: + return llvm::PointerType::get( + llvm::StructType::create(Ctx, "opencl.image2d_array_msaa_depth_t"), + ImgAddrSpc); case BuiltinType::OCLImage3d: return llvm::PointerType::get(llvm::StructType::create( Ctx, "opencl.image3d_t"), ImgAddrSpc); @@ -63,5 +85,17 @@ case BuiltinType::OCLEvent: return llvm::PointerType::get(llvm::StructType::create( Ctx, "opencl.event_t"), 0); + case BuiltinType::OCLClkEvent: + return llvm::PointerType::get( + llvm::StructType::create(Ctx, "opencl.clk_event_t"), 0); + case BuiltinType::OCLQueue: + return llvm::PointerType::get( + llvm::StructType::create(Ctx, "opencl.queue_t"), 0); + case BuiltinType::OCLNDRange: + return llvm::PointerType::get( + llvm::StructType::create(Ctx, "opencl.ndrange_t"), 0); + case BuiltinType::OCLReserveID: + return llvm::PointerType::get( + llvm::StructType::create(Ctx, "opencl.reserve_id_t"), 0); } } Index: lib/CodeGen/CodeGenTypes.cpp =================================================================== --- lib/CodeGen/CodeGenTypes.cpp (revision 240020) +++ lib/CodeGen/CodeGenTypes.cpp (working copy) @@ -387,9 +387,19 @@ case BuiltinType::OCLImage1dBuffer: case BuiltinType::OCLImage2d: case BuiltinType::OCLImage2dArray: + case BuiltinType::OCLImage2dDepth: + case BuiltinType::OCLImage2dArrayDepth: + case BuiltinType::OCLImage2dMSAA: + case BuiltinType::OCLImage2dArrayMSAA: + case BuiltinType::OCLImage2dMSAADepth: + case BuiltinType::OCLImage2dArrayMSAADepth: case BuiltinType::OCLImage3d: case BuiltinType::OCLSampler: case BuiltinType::OCLEvent: + case BuiltinType::OCLClkEvent: + case BuiltinType::OCLQueue: + case BuiltinType::OCLNDRange: + case BuiltinType::OCLReserveID: ResultType = CGM.getOpenCLRuntime().convertOpenCLSpecificType(Ty); break; Index: lib/CodeGen/ItaniumCXXABI.cpp =================================================================== --- lib/CodeGen/ItaniumCXXABI.cpp (revision 240020) +++ lib/CodeGen/ItaniumCXXABI.cpp (working copy) @@ -2341,9 +2341,19 @@ case BuiltinType::OCLImage1dBuffer: case BuiltinType::OCLImage2d: case BuiltinType::OCLImage2dArray: + case BuiltinType::OCLImage2dDepth: + case BuiltinType::OCLImage2dArrayDepth: + case BuiltinType::OCLImage2dMSAA: + case BuiltinType::OCLImage2dArrayMSAA: + case BuiltinType::OCLImage2dMSAADepth: + case BuiltinType::OCLImage2dArrayMSAADepth: case BuiltinType::OCLImage3d: case BuiltinType::OCLSampler: case BuiltinType::OCLEvent: + case BuiltinType::OCLClkEvent: + case BuiltinType::OCLQueue: + case BuiltinType::OCLNDRange: + case BuiltinType::OCLReserveID: return true; case BuiltinType::Dependent: Index: lib/Index/USRGeneration.cpp =================================================================== --- lib/Index/USRGeneration.cpp (revision 240020) +++ lib/Index/USRGeneration.cpp (working copy) @@ -613,8 +613,18 @@ case BuiltinType::OCLImage1dBuffer: case BuiltinType::OCLImage2d: case BuiltinType::OCLImage2dArray: + case BuiltinType::OCLImage2dDepth: + case BuiltinType::OCLImage2dArrayDepth: + case BuiltinType::OCLImage2dMSAA: + case BuiltinType::OCLImage2dArrayMSAA: + case BuiltinType::OCLImage2dMSAADepth: + case BuiltinType::OCLImage2dArrayMSAADepth: case BuiltinType::OCLImage3d: case BuiltinType::OCLEvent: + case BuiltinType::OCLClkEvent: + case BuiltinType::OCLQueue: + case BuiltinType::OCLNDRange: + case BuiltinType::OCLReserveID: case BuiltinType::OCLSampler: IgnoreResults = true; return; Index: lib/Sema/Sema.cpp =================================================================== --- lib/Sema/Sema.cpp (revision 240020) +++ lib/Sema/Sema.cpp (working copy) @@ -214,6 +214,18 @@ addImplicitTypedef("sampler_t", Context.OCLSamplerTy); addImplicitTypedef("event_t", Context.OCLEventTy); if (getLangOpts().OpenCLVersion >= 200) { + addImplicitTypedef("image2d_depth_t", Context.OCLImage2dDepthTy); + addImplicitTypedef("image2d_array_depth_t", + Context.OCLImage2dArrayDepthTy); + addImplicitTypedef("image2d_msaa_t", Context.OCLImage2dMSAATy); + addImplicitTypedef("image2d_array_msaa_t", Context.OCLImage2dArrayMSAATy); + addImplicitTypedef("image2d_msaa_depth_t", Context.OCLImage2dMSAADepthTy); + addImplicitTypedef("image2d_array_msaa_depth_t", + Context.OCLImage2dArrayMSAADepthTy); + addImplicitTypedef("clk_event_t", Context.OCLClkEventTy); + addImplicitTypedef("queue_t", Context.OCLQueueTy); + addImplicitTypedef("ndrange_t", Context.OCLNDRangeTy); + addImplicitTypedef("reserve_id_t", Context.OCLReserveIDTy); addImplicitTypedef("atomic_int", Context.getAtomicType(Context.IntTy)); addImplicitTypedef("atomic_uint", Context.getAtomicType(Context.UnsignedIntTy)); Index: lib/Sema/SemaType.cpp =================================================================== --- lib/Sema/SemaType.cpp (revision 240020) +++ lib/Sema/SemaType.cpp (working copy) @@ -996,6 +996,13 @@ << Result << "cl_khr_fp64"; declarator.setInvalidType(true); } + } else if (!S.getOpenCLOptions().cl_khr_gl_msaa_sharing && + (Result->isImage2dMSAAT() || Result->isImage2dArrayMSAAT() || + Result->isImage2dArrayMSAATDepth() || + Result->isImage2dMSAATDepth())) { + S.Diag(DS.getTypeSpecTypeLoc(), diag::err_type_requires_extension) + << Result << "cl_khr_gl_msaa_sharing"; + declarator.setInvalidType(true); } } Index: lib/Serialization/ASTCommon.cpp =================================================================== --- lib/Serialization/ASTCommon.cpp (revision 240020) +++ lib/Serialization/ASTCommon.cpp (working copy) @@ -67,9 +67,39 @@ case BuiltinType::OCLImage1dBuffer: ID = PREDEF_TYPE_IMAGE1D_BUFF_ID; break; case BuiltinType::OCLImage2d: ID = PREDEF_TYPE_IMAGE2D_ID; break; case BuiltinType::OCLImage2dArray: ID = PREDEF_TYPE_IMAGE2D_ARR_ID; break; + case BuiltinType::OCLImage2dDepth: + ID = PREDEF_TYPE_IMAGE2D_DEP_ID; + break; + case BuiltinType::OCLImage2dArrayDepth: + ID = PREDEF_TYPE_IMAGE2D_ARR_DEP_ID; + break; + case BuiltinType::OCLImage2dMSAA: + ID = PREDEF_TYPE_IMAGE2D_MSAA_ID; + break; + case BuiltinType::OCLImage2dArrayMSAA: + ID = PREDEF_TYPE_IMAGE2D_ARR_MSAA_ID; + break; + case BuiltinType::OCLImage2dMSAADepth: + ID = PREDEF_TYPE_IMAGE2D_MSAA_DEP_ID; + break; + case BuiltinType::OCLImage2dArrayMSAADepth: + ID = PREDEF_TYPE_IMAGE2D_ARR_MSAA_DEPTH_ID; + break; case BuiltinType::OCLImage3d: ID = PREDEF_TYPE_IMAGE3D_ID; break; case BuiltinType::OCLSampler: ID = PREDEF_TYPE_SAMPLER_ID; break; case BuiltinType::OCLEvent: ID = PREDEF_TYPE_EVENT_ID; break; + case BuiltinType::OCLClkEvent: + ID = PREDEF_TYPE_CLK_EVENT_ID; + break; + case BuiltinType::OCLQueue: + ID = PREDEF_TYPE_QUEUE_ID; + break; + case BuiltinType::OCLNDRange: + ID = PREDEF_TYPE_NDRANGE_ID; + break; + case BuiltinType::OCLReserveID: + ID = PREDEF_TYPE_RESERVE_ID_ID; + break; case BuiltinType::BuiltinFn: ID = PREDEF_TYPE_BUILTIN_FN; break; Index: lib/Serialization/ASTReader.cpp =================================================================== --- lib/Serialization/ASTReader.cpp (revision 240020) +++ lib/Serialization/ASTReader.cpp (working copy) @@ -5716,9 +5716,39 @@ case PREDEF_TYPE_IMAGE1D_BUFF_ID: T = Context.OCLImage1dBufferTy; break; case PREDEF_TYPE_IMAGE2D_ID: T = Context.OCLImage2dTy; break; case PREDEF_TYPE_IMAGE2D_ARR_ID: T = Context.OCLImage2dArrayTy; break; + case PREDEF_TYPE_IMAGE2D_DEP_ID: + T = Context.OCLImage2dDepthTy; + break; + case PREDEF_TYPE_IMAGE2D_ARR_DEP_ID: + T = Context.OCLImage2dArrayDepthTy; + break; + case PREDEF_TYPE_IMAGE2D_MSAA_ID: + T = Context.OCLImage2dMSAATy; + break; + case PREDEF_TYPE_IMAGE2D_ARR_MSAA_ID: + T = Context.OCLImage2dArrayMSAATy; + break; + case PREDEF_TYPE_IMAGE2D_MSAA_DEP_ID: + T = Context.OCLImage2dMSAADepthTy; + break; + case PREDEF_TYPE_IMAGE2D_ARR_MSAA_DEPTH_ID: + T = Context.OCLImage2dArrayMSAADepthTy; + break; case PREDEF_TYPE_IMAGE3D_ID: T = Context.OCLImage3dTy; break; case PREDEF_TYPE_SAMPLER_ID: T = Context.OCLSamplerTy; break; case PREDEF_TYPE_EVENT_ID: T = Context.OCLEventTy; break; + case PREDEF_TYPE_CLK_EVENT_ID: + T = Context.OCLClkEventTy; + break; + case PREDEF_TYPE_QUEUE_ID: + T = Context.OCLQueueTy; + break; + case PREDEF_TYPE_NDRANGE_ID: + T = Context.OCLNDRangeTy; + break; + case PREDEF_TYPE_RESERVE_ID_ID: + T = Context.OCLReserveIDTy; + break; case PREDEF_TYPE_AUTO_DEDUCT: T = Context.getAutoDeductType(); break; case PREDEF_TYPE_AUTO_RREF_DEDUCT: Index: test/CodeGenOpenCL/opencl_20_types.cl =================================================================== --- test/CodeGenOpenCL/opencl_20_types.cl (revision 0) +++ test/CodeGenOpenCL/opencl_20_types.cl (working copy) @@ -0,0 +1,32 @@ +// RUN: %clang_cc1 %s -emit-llvm -cl-std=CL2.0 -o - -O0 | FileCheck %s + +void fnc2depth(image2d_depth_t img) {} +// CHECK: @fnc2depth(%opencl.image2d_depth_t* + +void fnc2arraydepth(image2d_array_depth_t img) {} +// CHECK: @fnc2arraydepth(%opencl.image2d_array_depth_t* + +#pragma OPENCL EXTENSION cl_khr_gl_msaa_sharing : enable + +void fnc2msaa(image2d_msaa_t img) {} +// CHECK: @fnc2msaa(%opencl.image2d_msaa_t* + +void fnc2arraymsaa(image2d_array_msaa_t img) {} +// CHECK: @fnc2arraymsaa(%opencl.image2d_array_msaa_t* + +void fnc2msaadepth(image2d_msaa_depth_t img) {} +// CHECK: @fnc2msaadepth(%opencl.image2d_msaa_depth_t* + +void fnc2arraymsaadepth(image2d_array_msaa_depth_t img) {} +// CHECK: @fnc2arraymsaadepth(%opencl.image2d_array_msaa_depth_t* + +kernel void other_types(image2d_array_msaa_depth_t img) { + clk_event_t clevt; + // CHECK: alloca %opencl.clk_event_t* + queue_t q; + // CHECK: alloca %opencl.queue_t* + ndrange_t range; + // CHECK: alloca %opencl.ndrange_t* + reserve_id_t res; + // CHECK: alloca %opencl.reserve_id_t* +} Index: test/PCH/ocl_types.h =================================================================== --- test/PCH/ocl_types.h (revision 240020) +++ test/PCH/ocl_types.h (working copy) @@ -23,3 +23,37 @@ // event_t typedef event_t evt_t; + +#if __OPENCL_VERSION__ >= 200 + +// clk_event_t +typedef clk_event_t clkevt_t; + +// queue_t +typedef queue_t q_t; + +// ndrange_t +typedef ndrange_t range_t; + +// reserve_id_t +typedef reserve_id_t reserveid_t; + +// image2d_depth_t +typedef image2d_depth_t img2ddep_t; + +// image2d_array_depth_t +typedef image2d_array_depth_t img2darr_dep_t; + +// image2d_msaa_t +typedef image2d_msaa_t img2dmsaa_t; + +// image2d_array_msaa_t +typedef image2d_array_msaa_t img2darrmsaa_t; + +// image2d_msaa_depth_t +typedef image2d_msaa_depth_t img2dmsaadep_t; + +// image2d_array_msaa_depth_t +typedef image2d_array_msaa_depth_t img2darrmsaadep_t; + +#endif Index: test/SemaOpenCL/msaa_types.cl =================================================================== --- test/SemaOpenCL/msaa_types.cl (revision 0) +++ test/SemaOpenCL/msaa_types.cl (working copy) @@ -0,0 +1,16 @@ +// RUN: %clang_cc1 %s -cl-std=CL2.0 -verify -pedantic -fsyntax-only -Wno-unused-value + +#pragma OPENCL EXTENSION cl_khr_gl_msaa_sharing : disable + +void half_disabled(image2d_msaa_t one, // expected-error{{use of type 'image2d_msaa_t' requires cl_khr_gl_msaa_sharing extension to be enabled}} + image2d_array_msaa_t two, // expected-error{{use of type 'image2d_array_msaa_t' requires cl_khr_gl_msaa_sharing extension to be enabled}} + image2d_msaa_depth_t three, // expected-error{{use of type 'image2d_msaa_depth_t' requires cl_khr_gl_msaa_sharing extension to be enabled}} + image2d_array_msaa_depth_t four) // expected-error{{use of type 'image2d_array_msaa_depth_t' requires cl_khr_gl_msaa_sharing extension to be enabled}} +{ +} + +// Exactly the same as above but with the cl_khr_gl_msaa_sharing extension enabled. +#pragma OPENCL EXTENSION cl_khr_gl_msaa_sharing : enable +void msaa_enabled(image2d_msaa_t one, image2d_array_msaa_t two, + image2d_msaa_depth_t three, image2d_array_msaa_depth_t four) { +} Index: tools/libclang/CIndex.cpp =================================================================== --- tools/libclang/CIndex.cpp (revision 240020) +++ tools/libclang/CIndex.cpp (working copy) @@ -1423,9 +1423,19 @@ case BuiltinType::OCLImage1dBuffer: case BuiltinType::OCLImage2d: case BuiltinType::OCLImage2dArray: + case BuiltinType::OCLImage2dDepth: + case BuiltinType::OCLImage2dArrayDepth: + case BuiltinType::OCLImage2dMSAA: + case BuiltinType::OCLImage2dArrayMSAA: + case BuiltinType::OCLImage2dMSAADepth: + case BuiltinType::OCLImage2dArrayMSAADepth: case BuiltinType::OCLImage3d: case BuiltinType::OCLSampler: case BuiltinType::OCLEvent: + case BuiltinType::OCLClkEvent: + case BuiltinType::OCLQueue: + case BuiltinType::OCLNDRange: + case BuiltinType::OCLReserveID: #define BUILTIN_TYPE(Id, SingletonId) #define SIGNED_TYPE(Id, SingletonId) case BuiltinType::Id: #define UNSIGNED_TYPE(Id, SingletonId) case BuiltinType::Id:
_______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits