FYI: OpenCL is planning to add C++ flavor of kernel language:
https://www.khronos.org/registry/cl/specs/opencl-2.1-openclc++.pdf
On Wed, Feb 3, 2016 at 12:04 PM, Benyei, Guy via cfe-commits <
cfe-commits@lists.llvm.org> wrote:
> Hi Richard,
> Since these are OpenCL specific types, I think you are right, these types
> shouldn't be part of the C++ ABI library.
>
> Thanks
> Guy
>
> -Original Message-
> From: meta...@gmail.com [mailto:meta...@gmail.com] On Behalf Of Richard
> Smith
> Sent: Wednesday, February 03, 2016 02:46
> To: Benyei, Guy ; cfe-commits <
> cfe-commits@lists.llvm.org>
> Subject: Fwd: [cfe-commits] r170428 [1/3] - in /cfe/trunk:
> include/clang/AST/ include/clang/Basic/ include/clang/Sema/
> include/clang/Serialization/ lib/AST/ lib/CodeGen/ lib/Parse/ lib/Sema/
> lib/Serialization/ test/CodeGenOpenCL/ test/PCH/ test/Parser/ tools/li...
>
> Hi Guy,
>
> > Modified: cfe/trunk/lib/CodeGen/CGRTTI.cpp
> > URL:
> > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGRTTI.cpp?r
> > ev=170428&r1=170427&r2=170428&view=diff
> > ==
> >
> > --- cfe/trunk/lib/CodeGen/CGRTTI.cpp (original)
> > +++ cfe/trunk/lib/CodeGen/CGRTTI.cpp Tue Dec 18 06:30:03 2012
> > @@ -1,1011 +1,1017 @@
> [...]
> > -/// TypeInfoIsInStandardLibrary - Given a builtin type, returns
> > whether the type -/// info for that type is defined in the standard
> library.
> > -static bool TypeInfoIsInStandardLibrary(const BuiltinType *Ty) {
> > - // Itanium C++ ABI 2.9.2:
> > - // Basic type information (e.g. for "int", "bool", etc.) will be
> kept in
> > - // the run-time support library. Specifically, the run-time support
> > - // library should contain type_info objects for the types X, X* and
> > - // X const*, for every X in: void, std::nullptr_t, bool, wchar_t,
> char,
> > - // unsigned char, signed char, short, unsigned short, int, unsigned
> int,
> > - // long, unsigned long, long long, unsigned long long, float,
> double,
> > - // long double, char16_t, char32_t, and the IEEE 754r decimal and
> > - // half-precision floating point types.
> > - switch (Ty->getKind()) {
> > -case BuiltinType::Void:
> > -case BuiltinType::NullPtr:
> > -case BuiltinType::Bool:
> > -case BuiltinType::WChar_S:
> > -case BuiltinType::WChar_U:
> > -case BuiltinType::Char_U:
> > -case BuiltinType::Char_S:
> > -case BuiltinType::UChar:
> > -case BuiltinType::SChar:
> > -case BuiltinType::Short:
> > -case BuiltinType::UShort:
> > -case BuiltinType::Int:
> > -case BuiltinType::UInt:
> > -case BuiltinType::Long:
> > -case BuiltinType::ULong:
> > -case BuiltinType::LongLong:
> > -case BuiltinType::ULongLong:
> > -case BuiltinType::Half:
> > -case BuiltinType::Float:
> > -case BuiltinType::Double:
> > -case BuiltinType::LongDouble:
> > -case BuiltinType::Char16:
> > -case BuiltinType::Char32:
> > -case BuiltinType::Int128:
> > -case BuiltinType::UInt128:
> > - return true;
> > +/// TypeInfoIsInStandardLibrary - Given a builtin type, returns
> > +whether the type /// info for that type is defined in the standard
> library.
> > +static bool TypeInfoIsInStandardLibrary(const BuiltinType *Ty) {
> > + // Itanium C++ ABI 2.9.2:
> > + // Basic type information (e.g. for "int", "bool", etc.) will be
> kept in
> > + // the run-time support library. Specifically, the run-time support
> > + // library should contain type_info objects for the types X, X* and
> > + // X const*, for every X in: void, std::nullptr_t, bool, wchar_t,
> char,
> > + // unsigned char, signed char, short, unsigned short, int, unsigned
> int,
> > + // long, unsigned long, long long, unsigned long long, float,
> double,
> > + // long double, char16_t, char32_t, and the IEEE 754r decimal and
> > + // half-precision floating point types.
> > + switch (Ty->getKind()) {
> > +case BuiltinType::Void:
> > +case BuiltinType::NullPtr:
> > +case BuiltinType::Bool:
> > +case BuiltinType::WChar_S:
> > +case BuiltinType::WChar_U:
> > +case BuiltinType::Char_U:
> > +case BuiltinType::Char_S:
> > +case BuiltinType::UChar:
> > +case BuiltinType::SChar:
> > +case BuiltinType::Short:
> > +case BuiltinType::UShort:
> > +case BuiltinType::Int:
> > +case BuiltinType::UInt:
> > +case BuiltinType::Long:
> > +case BuiltinType::ULong:
> > +case BuiltinType::LongLong:
> > +case BuiltinType::ULongLong:
> > +case BuiltinType::Half:
> > +case BuiltinType::Float:
> > +case BuiltinType::Double:
> > +case BuiltinType::LongDouble:
> > +case BuiltinType::Char16:
> > +case BuiltinType::Char32:
> > +case BuiltinType::Int128:
> > +case BuiltinType::UInt128:
> > +case BuiltinType::OCLImage1d:
> > +case BuiltinType::OCLImage1dArray:
> > +case BuiltinType::OCLImage1dBuffer:
> > +