Message ID | oro786j4ud.fsf@lxoliva.fsfla.org |
---|---|
State | New |
Headers | show |
Series | [testsuite] add linkonly to dg-additional-sources [PR115295] | expand |
On Tue, Jun 11, 2024 at 7:03 PM Alexandre Oliva <oliva@adacore.com> wrote: > > > The D testsuite shows it was a mistake to assume that > dg-additional-sources are never to be used for compilation tests. > Even if an output file is specified for compilation, extra module > files can be named and used in the compilation without being flagged > as errors. > > Introduce a 'linkonly' flag for dg-additional-sources, and use it in > pr95401.cc, so that its additional sources get discarded when vector > tests downgrade to compile-only. > > Regstrapped on x86_64-linux-gnu. Also tested with 'dg-do compile' in > pr95401.cc. Ok to install? I think we should just fully revert the changes to dg-additional-sources and add an explicit `dg-do run` to pr95401.cc as I had did to the other vect testcases that fail in a similar way (see PR 113899, r14-8978-g948dbc5ee45f9f ). Since this is only working around this one testcase this way. Thanks, Andrew Pinski > > > for gcc/ChangeLog > > * doc/sourcebuild.texi (dg-additional-sources): Add linkonly. > > for gcc/testsuite/ChangeLog > > * g++.dg/vect/pr95401.cc: Add linkonly to dg-additional-sources. > * lib/gcc-defs (additional_sources_omit_on_compile): New. > (dg-additional-sources): Add to it on linkonly. > (dg-additional-files-options): Omit select sources on compile. > --- > gcc/doc/sourcebuild.texi | 9 +++++---- > gcc/testsuite/g++.dg/vect/pr95401.cc | 2 +- > gcc/testsuite/lib/gcc-defs.exp | 35 +++++++++++++++++++++++++++------- > 3 files changed, 34 insertions(+), 12 deletions(-) > > diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi > index e997dbec3334b..08c178db674c8 100644 > --- a/gcc/doc/sourcebuild.texi > +++ b/gcc/doc/sourcebuild.texi > @@ -1320,15 +1320,16 @@ to @var{var_value} before execution of the program created by the test. > Specify additional files, other than source files, that must be copied > to the system where the compiler runs. > > -@item @{ dg-additional-sources "@var{filelist}" [@{ target @var{selector} @}] @} > +@item @{ dg-additional-sources "@var{filelist}" [@{ \[linkonly\] \[target @var{selector}\] @}] @} > Specify additional source files to appear in the compile line > following the main test file. > If the directive includes the optional @samp{@{ @var{selector} @}} > then the additional sources are only added if the target system > matches the @var{selector}. > -Additional sources are generally used only in @samp{link} and @samp{run} > -tests; they are reported as unsupported and discarded in other kinds of > -tests that direct the compiler to output to a single file. > +If @samp{linkonly} is specified, additional sources are used only in > +@samp{link} and @samp{run} tests; they are reported as unsupported and > +discarded in other kinds of tests that direct the compiler to output to > +a single file. > @end table > > @subsubsection Add checks at the end of a test > diff --git a/gcc/testsuite/g++.dg/vect/pr95401.cc b/gcc/testsuite/g++.dg/vect/pr95401.cc > index 6a56dab095722..8b1be4f242521 100644 > --- a/gcc/testsuite/g++.dg/vect/pr95401.cc > +++ b/gcc/testsuite/g++.dg/vect/pr95401.cc > @@ -1,5 +1,5 @@ > // { dg-additional-options "-mavx2 -O3" { target avx2_runtime } } > -// { dg-additional-sources pr95401a.cc } > +// { dg-additional-sources pr95401a.cc linkonly } > > extern int var_9; > extern unsigned var_14; > diff --git a/gcc/testsuite/lib/gcc-defs.exp b/gcc/testsuite/lib/gcc-defs.exp > index cdca4c254d6ec..c6ec490f0092e 100644 > --- a/gcc/testsuite/lib/gcc-defs.exp > +++ b/gcc/testsuite/lib/gcc-defs.exp > @@ -303,18 +303,26 @@ proc dg-additional-options { args } { > # main source file. > > set additional_sources "" > +set additional_sources_omit_on_compile "" > set additional_sources_used "" > > proc dg-additional-sources { args } { > global additional_sources > + global additional_sources_omit_on_compile > > if { [llength $args] > 3 } { > error "[lindex $args 0]: too many arguments" > return > } > > - if { [llength $args] >= 3 } { > - switch [dg-process-target [lindex $args 2]] { > + set target [lindex $args 2] > + if { [llength $args] >= 3 && [lindex $target 0] == "linkonly" } { > + append additional_sources_omit_on_compile " [lindex $args 1]" > + set target [lreplace $target 0 1] > + } > + > + if { [llength $args] >= 3 && $target != ""} { > + switch [dg-process-target $target] { > "S" { append additional_sources " [lindex $args 1]" } > "N" { } > "F" { error "[lindex $args 0]: `xfail' not allowed here" } > @@ -407,16 +415,29 @@ proc dg-additional-files-options { options source dest type } { > gcc_adjust_linker_flags > > global additional_sources > + global additional_sources_omit_on_compile > global additional_sources_used > global additional_files > set to_download [list] > - if { $additional_sources == "" } then { > - } elseif { $type != "executable" && $dest != "" } then { > + if { $additional_sources_omit_on_compile != "" \ > + && $additional_sources != "" \ > + && $type != "executable" && $dest != "" } then { > + set linkonly "" > foreach s $additional_sources { > - unsupported "$s: additional-source will not be used to build $dest" > + foreach s2 $additional_sources_omit_on_compile { > + if { $s == $s2 } { > + unsupported "$s: additional-source will not be used to build $dest" > + set s "" > + break > + } > + } > + if { $s != "" } { > + append linkonly " $s" > + } > } > - set additional_sources_used "" > - set additional_sources "" > + set additional_sources "$linkonly" > + } > + if { $additional_sources == "" } then { > } else { > if [is_remote host] { > lappend options "additional_flags=$additional_sources" > > -- > Alexandre Oliva, happy hacker https://FSFLA.org/blogs/lxo/ > Free Software Activist GNU Toolchain Engineer > More tolerance and less prejudice are key for inclusion and diversity > Excluding neuro-others for not behaving ""normal"" is *not* inclusive
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index e997dbec3334b..08c178db674c8 100644 --- a/gcc/doc/sourcebuild.texi +++ b/gcc/doc/sourcebuild.texi @@ -1320,15 +1320,16 @@ to @var{var_value} before execution of the program created by the test. Specify additional files, other than source files, that must be copied to the system where the compiler runs. -@item @{ dg-additional-sources "@var{filelist}" [@{ target @var{selector} @}] @} +@item @{ dg-additional-sources "@var{filelist}" [@{ \[linkonly\] \[target @var{selector}\] @}] @} Specify additional source files to appear in the compile line following the main test file. If the directive includes the optional @samp{@{ @var{selector} @}} then the additional sources are only added if the target system matches the @var{selector}. -Additional sources are generally used only in @samp{link} and @samp{run} -tests; they are reported as unsupported and discarded in other kinds of -tests that direct the compiler to output to a single file. +If @samp{linkonly} is specified, additional sources are used only in +@samp{link} and @samp{run} tests; they are reported as unsupported and +discarded in other kinds of tests that direct the compiler to output to +a single file. @end table @subsubsection Add checks at the end of a test diff --git a/gcc/testsuite/g++.dg/vect/pr95401.cc b/gcc/testsuite/g++.dg/vect/pr95401.cc index 6a56dab095722..8b1be4f242521 100644 --- a/gcc/testsuite/g++.dg/vect/pr95401.cc +++ b/gcc/testsuite/g++.dg/vect/pr95401.cc @@ -1,5 +1,5 @@ // { dg-additional-options "-mavx2 -O3" { target avx2_runtime } } -// { dg-additional-sources pr95401a.cc } +// { dg-additional-sources pr95401a.cc linkonly } extern int var_9; extern unsigned var_14; diff --git a/gcc/testsuite/lib/gcc-defs.exp b/gcc/testsuite/lib/gcc-defs.exp index cdca4c254d6ec..c6ec490f0092e 100644 --- a/gcc/testsuite/lib/gcc-defs.exp +++ b/gcc/testsuite/lib/gcc-defs.exp @@ -303,18 +303,26 @@ proc dg-additional-options { args } { # main source file. set additional_sources "" +set additional_sources_omit_on_compile "" set additional_sources_used "" proc dg-additional-sources { args } { global additional_sources + global additional_sources_omit_on_compile if { [llength $args] > 3 } { error "[lindex $args 0]: too many arguments" return } - if { [llength $args] >= 3 } { - switch [dg-process-target [lindex $args 2]] { + set target [lindex $args 2] + if { [llength $args] >= 3 && [lindex $target 0] == "linkonly" } { + append additional_sources_omit_on_compile " [lindex $args 1]" + set target [lreplace $target 0 1] + } + + if { [llength $args] >= 3 && $target != ""} { + switch [dg-process-target $target] { "S" { append additional_sources " [lindex $args 1]" } "N" { } "F" { error "[lindex $args 0]: `xfail' not allowed here" } @@ -407,16 +415,29 @@ proc dg-additional-files-options { options source dest type } { gcc_adjust_linker_flags global additional_sources + global additional_sources_omit_on_compile global additional_sources_used global additional_files set to_download [list] - if { $additional_sources == "" } then { - } elseif { $type != "executable" && $dest != "" } then { + if { $additional_sources_omit_on_compile != "" \ + && $additional_sources != "" \ + && $type != "executable" && $dest != "" } then { + set linkonly "" foreach s $additional_sources { - unsupported "$s: additional-source will not be used to build $dest" + foreach s2 $additional_sources_omit_on_compile { + if { $s == $s2 } { + unsupported "$s: additional-source will not be used to build $dest" + set s "" + break + } + } + if { $s != "" } { + append linkonly " $s" + } } - set additional_sources_used "" - set additional_sources "" + set additional_sources "$linkonly" + } + if { $additional_sources == "" } then { } else { if [is_remote host] { lappend options "additional_flags=$additional_sources"