1 // RUN: %clang_cc1 -internal-isystem %S/../../lib/Headers/openmp_wrappers -include __clang_openmp_device_functions.h -internal-isystem %S/Inputs/include -verify -fopenmp -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=nvptx64 -emit-llvm-bc %s -o %t-ppc-host.bc 2 // RUN: %clang_cc1 -internal-isystem %S/../../lib/Headers/openmp_wrappers -include __clang_openmp_device_functions.h -internal-isystem %S/Inputs/include -verify -fopenmp -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=nvptx64 -emit-llvm %s -fopenmp-is-target-device -fopenmp-host-ir-file-path %t-ppc-host.bc -o - | FileCheck %s 3 // expected-no-diagnostics 4 5 // Ensure we make `_ZdlPv`, aka. `operator delete(void*)` available without the need to `include <new>`. 6 7 // CHECK: define {{.*}}_ZdlPv 8 9 #ifndef HEADER 10 #define HEADER 11 12 class Base { 13 public: 14 virtual ~Base() = default; 15 }; 16 17 class Derived : public Base { 18 public: 19 #pragma omp declare target 20 Derived(); 21 #pragma omp end declare target 22 }; 23 Derived()24Derived::Derived() { } 25 main(void)26int main(void) { 27 #pragma omp target 28 { 29 } 30 return 0; 31 } 32 #endif 33