diff mbox series

Make 'target-supports.exp' additions for nvptx target generally available

Message ID 87v8123owq.fsf@euler.schwinge.ddns.net
State New
Headers show
Series Make 'target-supports.exp' additions for nvptx target generally available | expand

Commit Message

Thomas Schwinge July 18, 2024, 11:44 a.m. UTC
Hi!

OK to push (once testing completes) the attached
"Make 'target-supports.exp' additions for nvptx target generally available"?

The idea of this new scheme is that explicit feature/target-specific
stuff isn't kept in 'gcc/testsuite/lib/target-supports.exp', but instead
in feature/target-specific 'gcc/testsuite/lib/target-supports-*.exp'
files.  (..., and hoping that other maintainers also pick up this new
scheme, and likewise move any feature/target-specific stuff from
'gcc/testsuite/lib/target-supports.exp', for example, into new
'gcc/testsuite/lib/target-supports-*.exp' files, to un-bloat the former
one.)


Grüße
 Thomas

Comments

Mike Stump Sept. 9, 2024, 8:49 p.m. UTC | #1
Ok.  Though, some of these files are so littered with target bits that essentially it doesn't make too much a difference.

On Jul 18, 2024, at 4:44 AM, Thomas Schwinge <tschwinge@baylibre.com> wrote:
> 
> OK to push (once testing completes) the attached
> "Make 'target-supports.exp' additions for nvptx target generally available"?
> 
> The idea of this new scheme is that explicit feature/target-specific
> stuff isn't kept in 'gcc/testsuite/lib/target-supports.exp', but instead
> in feature/target-specific 'gcc/testsuite/lib/target-supports-*.exp'
> files.  (..., and hoping that other maintainers also pick up this new
> scheme, and likewise move any feature/target-specific stuff from
> 'gcc/testsuite/lib/target-supports.exp', for example, into new
> 'gcc/testsuite/lib/target-supports-*.exp' files, to un-bloat the former
> one.)
diff mbox series

Patch

From b029aac1801ae1950e19bafef966eae28ce5b29f Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <tschwinge@baylibre.com>
Date: Wed, 17 Jul 2024 23:11:31 +0200
Subject: [PATCH] Make 'target-supports.exp' additions for nvptx target
 generally available

..., instead of just 'gcc.target/nvptx/nvptx.exp'.

	gcc/testsuite/lib/
	* gcc.target/nvptx/nvptx.exp: Move 'target-supports.exp' additions
	for nvptx target...
	* lib/target-supports-nvptx.exp: ... into this new file.
	* lib/target-supports.exp: Load it.
---
 gcc/testsuite/gcc.target/nvptx/nvptx.exp      | 66 -------------------
 .../target-supports-nvptx.exp}                | 27 ++------
 gcc/testsuite/lib/target-supports.exp         | 11 ++++
 3 files changed, 15 insertions(+), 89 deletions(-)
 copy gcc/testsuite/{gcc.target/nvptx/nvptx.exp => lib/target-supports-nvptx.exp} (81%)

diff --git a/gcc/testsuite/gcc.target/nvptx/nvptx.exp b/gcc/testsuite/gcc.target/nvptx/nvptx.exp
index 3151381f51a..d526b5822f9 100644
--- a/gcc/testsuite/gcc.target/nvptx/nvptx.exp
+++ b/gcc/testsuite/gcc.target/nvptx/nvptx.exp
@@ -25,72 +25,6 @@  if ![istarget nvptx*-*-*] then {
 # Load support procs.
 load_lib gcc-dg.exp
 
-# Return 1 if code by default compiles for at least PTX ISA version
-# major.minor.
-proc check_effective_target_default_ptx_isa_version_at_least { major minor } {
-    set name default_ptx_isa_version_at_least_${major}_${minor}
-
-    set supported_p \
-	[concat \
-	     "((__PTX_ISA_VERSION_MAJOR__ == $major" \
-	     "  && __PTX_ISA_VERSION_MINOR__ >= $minor)" \
-	     " || (__PTX_ISA_VERSION_MAJOR__ > $major))"]
-
-    set src \
-	[list \
-	     "#if $supported_p" \
-	     "#else" \
-	     "#error unsupported" \
-	     "#endif"]
-    set src [join $src "\n"]
-    
-    set res [check_no_compiler_messages $name assembly $src ""]
-
-    return $res
-}
-
-# Return 1 if code by default compiles for at least PTX ISA version 6.0.
-proc check_effective_target_default_ptx_isa_version_at_least_6_0 { } {
-    return [check_effective_target_default_ptx_isa_version_at_least 6 0]
-}
-
-# Return 1 if code with PTX ISA version major.minor or higher can be run.
-proc check_effective_target_runtime_ptx_isa_version_at_least { major minor } {
-    set name runtime_ptx_isa_version_${major}_${minor}
-
-    set default \
-	[check_effective_target_default_ptx_isa_version_at_least \
-	     ${major} ${minor}]
-
-    if { $default } {
-	set flag ""
-    } else {
-	set flag "-mptx=$major.$minor"
-    }
-
-    set res [check_runtime $name {
-	int main (void) { return 0; }
-    } $flag]
-
-    return $res
-}
-
-# Return 1 if runtime environment support the PTX ISA directive .alias.
-proc check_effective_target_runtime_ptx_alias { } {
-    return [check_effective_target_runtime_ptx_isa_version_at_least 6 3]
-}
-
-# Add options to enable using PTX ISA directive .alias.
-proc add_options_for_ptx_alias { flags } {
-    append flags " -malias"
-
-    if { ![check_effective_target_default_ptx_isa_version_at_least 6 3] } {
-	append flags " -mptx=6.3"
-    }
-
-    return $flags
-}
-
 # If a testcase doesn't have special options, use these.
 global DEFAULT_CFLAGS
 if ![info exists DEFAULT_CFLAGS] then {
diff --git a/gcc/testsuite/gcc.target/nvptx/nvptx.exp b/gcc/testsuite/lib/target-supports-nvptx.exp
similarity index 81%
copy from gcc/testsuite/gcc.target/nvptx/nvptx.exp
copy to gcc/testsuite/lib/target-supports-nvptx.exp
index 3151381f51a..5d014f518e0 100644
--- a/gcc/testsuite/gcc.target/nvptx/nvptx.exp
+++ b/gcc/testsuite/lib/target-supports-nvptx.exp
@@ -1,5 +1,6 @@ 
-# Specific regression driver for nvptx.
-# Copyright (C) 2015-2024 Free Software Foundation, Inc.
+# 'target-supports.exp' additions for nvptx target.
+
+# Copyright (C) 2022-2024 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -15,15 +16,11 @@ 
 # along with GCC; see the file COPYING3.  If not see
 # <http://www.gnu.org/licenses/>.
 
-# GCC testsuite that uses the `dg.exp' driver.
-
-# Exit immediately if this isn't a nvptx target.
+# Return early if this isn't a nvptx target.
 if ![istarget nvptx*-*-*] then {
   return
 }
 
-# Load support procs.
-load_lib gcc-dg.exp
 
 # Return 1 if code by default compiles for at least PTX ISA version
 # major.minor.
@@ -90,19 +87,3 @@  proc add_options_for_ptx_alias { flags } {
 
     return $flags
 }
-
-# If a testcase doesn't have special options, use these.
-global DEFAULT_CFLAGS
-if ![info exists DEFAULT_CFLAGS] then {
-    set DEFAULT_CFLAGS " -ansi -pedantic-errors"
-}
-
-# Initialize `dg'.
-dg-init
-
-# Main loop.
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \
-	"" $DEFAULT_CFLAGS
-
-# All done.
-dg-finish
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 9fc38075969..a486a57d4f1 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -13620,3 +13620,14 @@  proc check_effective_target_check_jsonschema { } {
         return 0;
     }
 }
+
+# Feature/target-specific additions via 'target-supports-*.exp' files.
+# If not applicable, these should 'return' early, for example.
+
+# In order to avoid having to fix up all GCC target libraries' '*.exp' files,
+# we're using 'source' here instead of 'load_lib'.  Conceptually, this means
+# that these 'target-supports-*.exp' files are never to be loaded individually,
+# but are contained in 'load_lib target-supports.exp'.
+set d [file dirname [info script]]
+source $d/target-supports-nvptx.exp
+unset d
-- 
2.34.1