On Tue, Jun 11, 2024 at 7:03 PM Alexandre Oliva <ol...@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

Reply via email to