Fznamznon created this revision. Herald added subscribers: cfe-commits, Anastasia, ebevhan. Herald added a project: clang.
While SYCL does not support __float128 for some device targets, emitting the diagnostic here prevents the compilation of host header files with __float128 type usage. For now just do not diagnose __float128 for SYCL. In the future we should have more precise check. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D74387 Files: clang/lib/Sema/SemaType.cpp clang/test/SemaSYCL/float128.cpp Index: clang/test/SemaSYCL/float128.cpp =================================================================== --- /dev/null +++ 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 <typename Name, typename Func> +__attribute__((sycl_kernel)) void kernel_single_task(Func kernelFunc) { + kernelFunc(); +} + +int main() { + __float128 A; + kernel_single_task<class fake_kernel>([=]() {}); + return 0; +} Index: clang/lib/Sema/SemaType.cpp =================================================================== --- clang/lib/Sema/SemaType.cpp +++ 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";
Index: clang/test/SemaSYCL/float128.cpp =================================================================== --- /dev/null +++ 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 <typename Name, typename Func> +__attribute__((sycl_kernel)) void kernel_single_task(Func kernelFunc) { + kernelFunc(); +} + +int main() { + __float128 A; + kernel_single_task<class fake_kernel>([=]() {}); + return 0; +} Index: clang/lib/Sema/SemaType.cpp =================================================================== --- clang/lib/Sema/SemaType.cpp +++ 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";
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits