Fix 'libgomp.fortran/target-print-1.f90', 'libgomp.oacc-fortran/print-1.f90' for offload target nvptx

libgomp/
	* testsuite/lib/libgomp.exp
	(check_effective_target_offload_target_nvptx): New proc.
	* testsuite/libgomp.fortran/target-print-1.f90: Use it with
	'dg-skip-if'.
	* testsuite/libgomp.oacc-fortran/print-1.f90: Likewise.
	* testsuite/libgomp.fortran/target-print-1-nvptx.f90: New file.
	* testsuite/libgomp.oacc-fortran/print-1-nvptx.f90: Likewise.

From-SVN: r278779
This commit is contained in:
Thomas Schwinge 2019-11-27 18:50:55 +01:00 committed by Thomas Schwinge
parent fa21363375
commit b1a73b4894
6 changed files with 61 additions and 4 deletions

View file

@ -1,3 +1,13 @@
2019-11-27 Thomas Schwinge <thomas@codesourcery.com>
* testsuite/lib/libgomp.exp
(check_effective_target_offload_target_nvptx): New proc.
* testsuite/libgomp.fortran/target-print-1.f90: Use it with
'dg-skip-if'.
* testsuite/libgomp.oacc-fortran/print-1.f90: Likewise.
* testsuite/libgomp.fortran/target-print-1-nvptx.f90: New file.
* testsuite/libgomp.oacc-fortran/print-1-nvptx.f90: Likewise.
2019-11-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* testsuite/libgomp.c/pr39591-1.c: Rename err to e.

View file

@ -336,6 +336,27 @@ proc offload_target_to_openacc_device_type { offload_target } {
}
}
# Return 1 if compiling for offload target nvptx.
proc check_effective_target_offload_target_nvptx { } {
# Consider all actual options, including the flags passed to
# 'gcc-dg-runtest', or 'gfortran-dg-runtest' (see the 'libgomp.*/*.exp'
# files; in particular, '-foffload', 'libgomp.oacc-*/*.exp'), which don't
# get passed on to 'check_effective_target_*' functions. (Not caching the
# result due to that.)
set options [current_compiler_flags]
# Instead of inspecting command-line options, look what the compiler driver
# decides. This is somewhat modelled after
# 'gcc/testsuite/lib/target-supports.exp:check_configured_with'.
set gcc_output [libgomp_target_compile "-v $options" "" "none" ""]
if [regexp "(?n)^OFFLOAD_TARGET_NAMES=(.*)" $gcc_output dummy offload_targets] {
verbose "compiling for offload targets: $offload_targets"
return [string match "*:nvptx*:*" ":$offload_targets:"]
}
verbose "not compiling for any offload targets"
return 0
}
# Return 1 if offload device is available.
proc check_effective_target_offload_device { } {
return [check_runtime_nocache offload_device_available_ {

View file

@ -0,0 +1,11 @@
! Ensure that write on the offload device works, nvptx offloading variant.
! This doesn't compile: for nvptx offloading we're using a minimal libgfortran
! configuration.
! { dg-do link } ! ..., but still apply 'dg-do run' options.
! { dg-xfail-if "minimal libgfortran" { offload_target_nvptx } }
! Skip duplicated testing.
! { dg-skip-if "separate file" { ! offload_target_nvptx } }
include 'target-print-1.f90'

View file

@ -1,8 +1,10 @@
! Ensure that printf on the offload device works.
! Ensure that write on the offload device works.
! { dg-do run }
! { dg-output "The answer is 42(\n|\r\n|\r)+" }
! { dg-xfail-if "no write for nvidia" { openacc_nvidia_accel_selected } }
! Separate file 'target-print-1-nvptx.f90' for nvptx offloading.
! { dg-skip-if "separate file" { offload_target_nvptx } }
program main
implicit none

View file

@ -0,0 +1,11 @@
! Ensure that write on the offload device works, nvptx offloading variant.
! This doesn't compile: for nvptx offloading we're using a minimal libgfortran
! configuration.
! { dg-do link } ! ..., but still apply 'dg-do run' options.
! { dg-xfail-if "minimal libgfortran" { offload_target_nvptx } }
! Skip duplicated testing.
! { dg-skip-if "separate file" { ! offload_target_nvptx } }
include 'print-1.f90'

View file

@ -1,8 +1,10 @@
! Ensure that printf on the offload device works.
! Ensure that write on the offload device works.
! { dg-do run }
! { dg-output "The answer is 42(\n|\r\n|\r)+" }
! { dg-xfail-if "no write for nvidia" { openacc_nvidia_accel_selected } }
! Separate file 'print-1-nvptx.f90' for nvptx offloading.
! { dg-skip-if "separate file" { offload_target_nvptx } }
program main
implicit none