Fix 'libgomp.fortran/target-print-1.f90', 'libgomp.oacc-fortran/print-1.f90' for...
authorThomas Schwinge <thomas@codesourcery.com>
Wed, 27 Nov 2019 17:50:55 +0000 (18:50 +0100)
committerThomas Schwinge <tschwinge@gcc.gnu.org>
Wed, 27 Nov 2019 17:50:55 +0000 (18:50 +0100)
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

libgomp/ChangeLog
libgomp/testsuite/lib/libgomp.exp
libgomp/testsuite/libgomp.fortran/target-print-1-nvptx.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.fortran/target-print-1.f90
libgomp/testsuite/libgomp.oacc-fortran/print-1-nvptx.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.oacc-fortran/print-1.f90

index 65478302ba8defb9e7afccbb7de05c1f855dbabe..d8d76ba3ce801c19dd39b3dc1203ebb609f32e67 100644 (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.
index 74d032623c95231071a665979e5dcb93ca6b9144..06e3186d966b853de4c52164743928d9712ea3f3 100644 (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_ {
diff --git a/libgomp/testsuite/libgomp.fortran/target-print-1-nvptx.f90 b/libgomp/testsuite/libgomp.fortran/target-print-1-nvptx.f90
new file mode 100644 (file)
index 0000000..a89c9c3
--- /dev/null
@@ -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'
index c71a09524838daa771d12a3c9cf53e263c954ec1..327bb22cb6d976653bd30b1476a9563fbc25f578 100644 (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
diff --git a/libgomp/testsuite/libgomp.oacc-fortran/print-1-nvptx.f90 b/libgomp/testsuite/libgomp.oacc-fortran/print-1-nvptx.f90
new file mode 100644 (file)
index 0000000..866c865
--- /dev/null
@@ -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'
index a83280d1edba2ddaca8214ab337bc3f8bf8e0a70..7b7f73741fe1e75a719529ed4b2c763496c26270 100644 (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