https://gcc.gnu.org/g:d0e0c26b2a3211ca0e1d945b4745c580d8f65f33

commit d0e0c26b2a3211ca0e1d945b4745c580d8f65f33
Author: Alexandre Oliva <ol...@gnu.org>
Date:   Tue Jun 11 21:44:55 2024 -0300

    [testsuite] add linkonly to dg-additional-sources [PR115295]

Diff:
---
 gcc/doc/sourcebuild.texi             |  9 +++++----
 gcc/testsuite/g++.dg/vect/pr95401.cc |  2 +-
 gcc/testsuite/lib/gcc-defs.exp       | 36 ++++++++++++++++++++++++++++--------
 3 files changed, 34 insertions(+), 13 deletions(-)

diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index e997dbec3334..08c178db674c 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 6a56dab09572..8b1be4f24252 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 cdca4c254d6e..324a90981e43 100644
--- a/gcc/testsuite/lib/gcc-defs.exp
+++ b/gcc/testsuite/lib/gcc-defs.exp
@@ -303,6 +303,7 @@ 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 } {
@@ -313,8 +314,14 @@ proc dg-additional-sources { args } {
        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,17 +414,30 @@ 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 {
-       foreach s $additional_sources {
-           unsupported "$s: additional-source will not be used to build $dest"
-       }
-       set additional_sources_used ""
-       set additional_sources ""
     } else {
+       
+       if { $type != "executable" && $dest != "" && \
+                $additional_sources_omit_on_compile != "" } then {
+           set linkonly ""
+           foreach s $additional_sources {
+               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 "$linkonly"
+       }
        if [is_remote host] {
            lappend options "additional_flags=$additional_sources"
        }

Reply via email to