I’m trying to migrate an OpenMP codebase to OpenMP target offloading, and naturally compiling it with nvc++ for the first time as well.
I’ve now managed to build my code with OpenMP completely turned off. However, if I turn it on, no matter whether it’s on GPU or CPU and seemingly independent of optimization settings, I end up with output similar to the following:
/domus/h1/nettel/nvhpc/Linux_x86_64/21.3/compilers/share/llvm/bin/llc /scratch/nvc++g6igsB3eWw9b.ll -march=x86-64 -mcpu=native -O0 -fast-isel=0 -non- global-value-max-name-size=4294967295 -x86-cmov-converter=0 --frame-pointer=none -o /scratch/nvc++26igI1YMkJdo.s /domus/h1/nettel/nvhpc/Linux_x86_64/21.3/compilers/share/llvm/bin/llc: error: /domus/h1/nettel/nvhpc/Linux_x86_64/21.3/compilers/share/llvm/bin/llc: /scratch/nvc++g6igsB3eWw9b.ll:9237:22: error: use of undefined value '%.F0063.addr' %3 = load i32, i32* %.F0063.addr, align 4, !dbg !5681 ^ nvc++-Fatal-llc completed with exit code 1 Unlinking /scratch/nvc++M6igYCJYIcXM.il Unlinking /scratch/nvc++w6igcd-rfoMK.s Unlinking /scratch/nvc++g6igsB3eWw9b.ll Unlinking /scratch/nvc++26igI1YMkJdo.s Unlinking /scratch/nvc++M6igYHjWaNhU.llvm
I’ve not found any easy flag to make it keep temporary files at that pass. -Mkeepasm is not really appropriate for this.
Again, I get this independently of what -mp target I choose (gpu or multicore). Any hints on how to troubleshoot this, or what would be needed to report it as a bug?