@@ -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
@@ -2,7 +2,7 @@
// { dg-require-effective-target vect_simd_clones }
// { dg-additional-options "-fopenmp-simd -fno-inline" }
// { dg-additional-options "-mavx" { target avx_runtime } }
-// { dg-additional-sources "pr68762-2.cc" }
+// { dg-additional-sources "pr68762-2.cc" linkonly }
#include "pr68762.h"
@@ -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;
@@ -1,7 +1,7 @@
// { dg-require-effective-target vect_simd_clones }
// { dg-additional-options "-fopenmp-simd -fno-inline" }
// { dg-additional-options "-mavx" { target avx_runtime } }
-// { dg-additional-sources "simd-clone-2.cc" }
+// { dg-additional-sources "simd-clone-2.cc" linkonly }
#include "simd-clone-2.h"
@@ -1,7 +1,7 @@
// { dg-require-effective-target vect_simd_clones }
// { dg-additional-options "-fopenmp-simd -fno-inline" }
// { dg-additional-options "-mavx" { target avx_runtime } }
-// { dg-additional-sources "simd-clone-4.cc" }
+// { dg-additional-sources "simd-clone-4.cc" linkonly }
#include "simd-clone-4.h"
@@ -1,9 +1,7 @@
-/* Since this uses dg-additional-sources, need to specify `dg-do run` instead of the default. */
-/* { dg-do run } */
/* { dg-require-effective-target vect_simd_clones } */
/* { dg-additional-options "-fopenmp-simd" } */
/* { dg-additional-options "-mavx" { target avx_runtime } } */
-/* { dg-additional-sources vect-simd-clone-10a.c } */
+/* { dg-additional-sources vect-simd-clone-10a.c linkonly } */
#include "tree-vect.h"
@@ -1,9 +1,7 @@
-/* Since this uses dg-additional-sources, need to specify `dg-do run` instead of the default. */
-/* { dg-do run } */
/* { dg-require-effective-target vect_simd_clones } */
/* { dg-additional-options "-fopenmp-simd" } */
/* { dg-additional-options "-mavx" { target avx_runtime } } */
-/* { dg-additional-sources vect-simd-clone-12a.c } */
+/* { dg-additional-sources vect-simd-clone-12a.c linkonly } */
#include "vect-simd-clone-10.c"
@@ -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"