https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118520

            Bug ID: 118520
           Summary: compiles with clang on openmp target, but gcc fails to
                    compile with unresolved symbol
                    __cxa_throw_bad_array_new_length
           Product: gcc
           Version: 14.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: schulz.benjamin at googlemail dot com
  Target Milestone: ---

Created attachment 60179
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=60179&action=edit
openmp offload test for simple pointer arithmetic

the attached file compiles with clang and runs on target, but 

 gcc  -O3 -fopenmp -foffload=nvptx-none  -fcf-protection=none
-fno-stack-protector   -no-pie  ./main.cpp -lm -lstdc++ -lrt

yields:

unresolved symbol __cxa_throw_bad_array_new_length

If it would run, its results would be rather interesting, since in clang the
running file shows rundime problems, when the lines that are commented out in
the source-code, are activated.

I have two devices, one gpu and one cpu, yet the omp device number (at least on
clang) is always 1. This confuses the target enter data and target exit data
commands of openmp. If i set them to work on device(1), they will, on clang
silently work on the host. If i run them on device(0), the mat(alloc:  )
preprocessor directive will erase data on the host. But that is for clang. 

For gcc, this small test file does not even compile...

I guess that is because there is a new command in a target region? or because
of whatever..., but well, i suspect that i have the c++ language available at
the target?
  • [Bug target/118520] New... schulz.benjamin at googlemail dot com via Gcc-bugs

Reply via email to