15d8d994dSJohannes Doerfert // 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*63ca93c7SSergio Afonso // 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 35d8d994dSJohannes Doerfert // expected-no-diagnostics 45d8d994dSJohannes Doerfert 55d8d994dSJohannes Doerfert // Ensure we make `_ZdlPv`, aka. `operator delete(void*)` available without the need to `include <new>`. 65d8d994dSJohannes Doerfert 75d8d994dSJohannes Doerfert // CHECK: define {{.*}}_ZdlPv 85d8d994dSJohannes Doerfert 95d8d994dSJohannes Doerfert #ifndef HEADER 105d8d994dSJohannes Doerfert #define HEADER 115d8d994dSJohannes Doerfert 125d8d994dSJohannes Doerfert class Base { 135d8d994dSJohannes Doerfert public: 145d8d994dSJohannes Doerfert virtual ~Base() = default; 155d8d994dSJohannes Doerfert }; 165d8d994dSJohannes Doerfert 175d8d994dSJohannes Doerfert class Derived : public Base { 185d8d994dSJohannes Doerfert public: 195d8d994dSJohannes Doerfert #pragma omp declare target 205d8d994dSJohannes Doerfert Derived(); 215d8d994dSJohannes Doerfert #pragma omp end declare target 225d8d994dSJohannes Doerfert }; 235d8d994dSJohannes Doerfert Derived()245d8d994dSJohannes DoerfertDerived::Derived() { } 255d8d994dSJohannes Doerfert main(void)265d8d994dSJohannes Doerfertint main(void) { 275d8d994dSJohannes Doerfert #pragma omp target 285d8d994dSJohannes Doerfert { 295d8d994dSJohannes Doerfert } 305d8d994dSJohannes Doerfert return 0; 315d8d994dSJohannes Doerfert } 325d8d994dSJohannes Doerfert #endif 33