diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp --- a/clang/lib/Sema/SemaType.cpp +++ b/clang/lib/Sema/SemaType.cpp @@ -1516,6 +1516,7 @@ break; case DeclSpec::TST_float128: if (!S.Context.getTargetInfo().hasFloat128Type() && + !S.getLangOpts().SYCLIsDevice && !(S.getLangOpts().OpenMP && S.getLangOpts().OpenMPIsDevice)) S.Diag(DS.getTypeSpecTypeLoc(), diag::err_type_unsupported) << "__float128"; diff --git a/clang/test/SemaSYCL/float128.cpp b/clang/test/SemaSYCL/float128.cpp new file mode 100644 --- /dev/null +++ b/clang/test/SemaSYCL/float128.cpp @@ -0,0 +1,15 @@ +// RUN: %clang_cc1 -triple spir64 -fsycl-is-device -verify -fsyntax-only %s +// expected-no-diagnostics + +void F(__float128); + +template +__attribute__((sycl_kernel)) void kernel_single_task(Func kernelFunc) { + kernelFunc(); +} + +int main() { + __float128 A; + kernel_single_task([=]() {}); + return 0; +}