https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101544
Bug ID: 101544 Summary: [OpenMP] 'declare target' block around class – unresolved _Znwm = "operator new(unsigned long)" Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: openmp, wrong-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: burnus at gcc dot gnu.org CC: cltang at gcc dot gnu.org, jakub at gcc dot gnu.org Target Milestone: --- Created attachment 51184 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=51184&action=edit Testcase declare_target_base_class.cpp >From https://github.com/SOLLVE/sollve_vv/pull/364 which is for https://github.com/SOLLVE/sollve_vv/issues/105 The code compiles with LLVM >= 12 but fails with LLVM < 12 according to the sollve_vv issue. The testcase – allegedly OpenMP 4.5 – fails to link with: unresolved symbol _Znwm collect2: error: ld returned 1 exit status mkoffload: fatal error: x86_64-none-linux-gnu-accel-nvptx-none-gcc returned 1 exit status where "_Znwm" = "operator new(unsigned long)" The code has: +#pragma omp declare target +class S { ... +#pragma omp target map(ptr) + ptr = new S(); ... +#pragma omp end declare target