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
>From b029aac1801ae1950e19bafef966eae28ce5b29f Mon Sep 17 00:00:00 2001 From: Thomas Schwinge <tschwi...@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