nvptx: Build libgfortran with '-mfake-ptx-alloca' [PR107635]
As of recent commit 8bf0ee8d62
"Fortran: Add transfer_between_remotes [PR107635]", we've got 'alloca' usage
in 'libgfortran/caf/single.c:_gfortran_caf_transfer_between_remotes', and
the libgfortran target library fails to build for legacy configurations where
PTX 'alloca' is not available:
../../../../source-gcc/libgfortran/caf/single.c: In function ‘_gfortran_caf_transfer_between_remotes’:
../../../../source-gcc/libgfortran/caf/single.c:675:23: sorry, unimplemented: dynamic stack allocation not supported
675 | transfer_desc = __builtin_alloca (desc_size);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../source-gcc/libgfortran/caf/single.c:680:20: sorry, unimplemented: dynamic stack allocation not supported
680 | transfer_ptr = __builtin_alloca (*opt_dst_charlen * src_size);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[6]: *** [Makefile:4675: caf/single.lo] Error 1
With '-mfake-ptx-alloca', libgfortran again succeeds to build, and compared
to before, we've got only a small number of regressions due to nvptx 'ld'
complaining about 'unresolved symbol __GCC_nvptx__PTX_alloca_not_supported':
[-PASS:-]{+FAIL:+} gfortran.dg/coarray/codimension_2.f90 -fcoarray=lib -O2 -lcaf_single (test for excess errors)
[-PASS:-]{+FAIL:+} gfortran.dg/coarray/event_4.f08 -fcoarray=lib -O2 -lcaf_single (test for excess errors)
[-PASS:-]{+UNRESOLVED:+} gfortran.dg/coarray/event_4.f08 -fcoarray=lib -O2 -lcaf_single [-execution test-]{+compilation failed to produce executable+}
[-PASS:-]{+FAIL:+} gfortran.dg/coarray/fail_image_2.f08 -fcoarray=lib -O2 -lcaf_single (test for excess errors)
[-PASS:-]{+UNRESOLVED:+} gfortran.dg/coarray/fail_image_2.f08 -fcoarray=lib -O2 -lcaf_single [-execution test-]{+compilation failed to produce executable+}
[-PASS:-]{+FAIL:+} gfortran.dg/coarray/proc_pointer_assign_1.f90 -fcoarray=lib -O2 -lcaf_single (test for excess errors)
[-PASS:-]{+UNRESOLVED:+} gfortran.dg/coarray/proc_pointer_assign_1.f90 -fcoarray=lib -O2 -lcaf_single [-execution test-]{+compilation failed to produce executable+}
[-PASS:-]{+FAIL:+} gfortran.dg/coarray_43.f90 -O (test for excess errors)
That's acceptable for such legacy PTX configurations.
PR target/107635
libgfortran/
* config/t-nvptx: New.
* configure.host [nvptx] (tmake_file): Add it.
This commit is contained in:
parent
1146410c0f
commit
bac2d8a246
2 changed files with 6 additions and 0 deletions
2
libgfortran/config/t-nvptx
Normal file
2
libgfortran/config/t-nvptx
Normal file
|
@ -0,0 +1,2 @@
|
|||
# Re 'alloca' usage in '../caf/single.c':
|
||||
AM_CFLAGS += -mfake-ptx-alloca
|
|
@ -91,6 +91,10 @@ case "${target}" in
|
|||
tmake_file="t-aix"
|
||||
;;
|
||||
|
||||
nvptx-*-none)
|
||||
tmake_file="$tmake_file t-nvptx"
|
||||
;;
|
||||
|
||||
*)
|
||||
;;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue