xref: /llvm-project/clang/test/SemaSYCL/unique-stable-name-multiple-target-crash.cpp (revision cb66bf2c6d20da01ab57cb78ec5e5c0978b873be)
1*cb66bf2cSErich Keane // RUN: %clang_cc1 %s %s -std=c++17 -triple x86_64-linux-gnu -fsycl-is-device -verify -fsyntax-only -Wno-unused
2*cb66bf2cSErich Keane 
3*cb66bf2cSErich Keane // This would crash due to the double-inputs, since the 'magic static' use in
4*cb66bf2cSErich Keane // the AST Context SCYL Filtering would end up caching an old version of the
5*cb66bf2cSErich Keane // ASTContext object, which no longer exists in the second file's invocation.
6*cb66bf2cSErich Keane //
7*cb66bf2cSErich Keane // expected-no-diagnostics
8*cb66bf2cSErich Keane class Empty {};
kernel(F)9*cb66bf2cSErich Keane template <typename, typename F> __attribute__((sycl_kernel)) void kernel(F) {
10*cb66bf2cSErich Keane     __builtin_sycl_unique_stable_name(F);
11*cb66bf2cSErich Keane }
12*cb66bf2cSErich Keane 
use()13*cb66bf2cSErich Keane void use() {
14*cb66bf2cSErich Keane   [](Empty) {
15*cb66bf2cSErich Keane     auto lambda = []{};
16*cb66bf2cSErich Keane     kernel<class i>(lambda);
17*cb66bf2cSErich Keane   };
18*cb66bf2cSErich Keane }
19