+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.
}
}
+# 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_ {
--- /dev/null
+! 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'
-! 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
--- /dev/null
+! 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'
-! 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