diff options
author | Yaxun (Sam) Liu <yaxun.liu@amd.com> | 2023-10-17 10:00:32 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-17 10:00:32 -0400 |
commit | fc53b1abf7d5e54012ea77a9bc8f6ccb7b487f13 (patch) | |
tree | 4d337f3d8a5d137fc11b9d20c6fc17fa38dfddfd /llvm/lib/IR/BasicBlock.cpp | |
parent | 096eba148df7dcddf9872544fbf510a2c1a9785c (diff) | |
download | llvm-fc53b1abf7d5e54012ea77a9bc8f6ccb7b487f13.zip llvm-fc53b1abf7d5e54012ea77a9bc8f6ccb7b487f13.tar.gz llvm-fc53b1abf7d5e54012ea77a9bc8f6ccb7b487f13.tar.bz2 |
[CUDA][HIP] Fix init var diag in temmplate (#69081)
Currently clang diagnoses the following code:
(https://godbolt.org/z/s8zK3E5P5) but nvcc
does not.
`
struct A {
constexpr A(){}
};
struct B {
A a;
int b;
};
template<typename T>
__global__ void kernel( )
{
__shared__ B x;
}
`
Clang generates an implicit trivial ctor for struct B, which should be
allowed for initializing a shared variable.
However, the body of the ctor is defined only if the template kernel is
instantiated. Clang checks the initialization of variable in
non-instantiated templates, where it cannot find the body of the ctor,
therefore diagnoses it.
This patch skips the check for non-instantiated templates.
Diffstat (limited to 'llvm/lib/IR/BasicBlock.cpp')
0 files changed, 0 insertions, 0 deletions