| // RUN: %clang_cc1 -fsyntax-only -verify %s |
| // RUN: %clang_cc1 -fcuda-is-device -fsyntax-only -verify %s |
| |
| #include "Inputs/cuda.h" |
| |
| // We don't allow destructors to be overloaded. Making this work would be a |
| // giant change to clang, and the use cases seem quite limited. |
| |
| struct A { |
| ~A() {} // expected-note {{previous definition is here}} |
| __device__ ~A() {} // expected-error {{destructor cannot be redeclared}} |
| }; |
| |
| struct B { |
| __host__ ~B() {} // expected-note {{previous definition is here}} |
| __host__ __device__ ~B() {} // expected-error {{destructor cannot be redeclared}} |
| }; |
| |
| struct C { |
| __host__ __device__ ~C() {} // expected-note {{previous definition is here}} |
| __host__ ~C() {} // expected-error {{destructor cannot be redeclared}} |
| }; |
| |
| struct D { |
| __device__ ~D() {} // expected-note {{previous definition is here}} |
| __host__ __device__ ~D() {} // expected-error {{destructor cannot be redeclared}} |
| }; |
| |
| struct E { |
| __host__ __device__ ~E() {} // expected-note {{previous definition is here}} |
| __device__ ~E() {} // expected-error {{destructor cannot be redeclared}} |
| }; |
| |