[Bug target/97102] New: [nvptx] PTX JIT compilation failed when using aliases
burnus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Sep 18 07:15:25 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97102
Bug ID: 97102
Summary: [nvptx] PTX JIT compilation failed when using aliases
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Keywords: openmp
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: burnus at gcc dot gnu.org
CC: vries at gcc dot gnu.org
Target Milestone: ---
[Found when testing a patch for PR96390, which works with GCN offloading but
not with nvptx]
When compiling the following with -fopenmp
--------------------------------------
#pragma omp declare target
int foo () { return 42; }
int bar () __attribute__((alias ("foo")));
#pragma omp end declare target
int
main ()
{
int n;
#pragma omp target map(from:n)
n = bar ();
if (n != 42)
__builtin_abort ();
}
--------------------------------------
it fails with when running with:
libgomp: Link error log ptxas application ptx input, line 89; error : Label
expected for argument 0 of instruction 'call'
ptxas application ptx input, line 89; fatal : Call target not recognized
ptxas fatal : Ptx assembly aborted due to errors
libgomp: cuLinkAddData (ptx_code) error: a PTX JIT compilation failed
The generated PTX has:
------------
// BEGIN GLOBAL FUNCTION DECL: foo
.visible .func (.param.u32 %value_out) foo;
// BEGIN GLOBAL FUNCTION DEF: foo
.visible .func (.param.u32 %value_out) foo
{
.reg.u32 %value;
.reg.u32 %r22;
.reg.u32 %r23;
mov.u32 %r22, 42;
mov.u32 %r23, %r22;
mov.u32 %value, %r23;
st.param.u32 [%value_out], %value;
ret;
}
...
call (%value_in), bar;
------
Namely: 'bar' only appears in the call.
More information about the Gcc-bugs
mailing list