https://gcc.gnu.org/pipermail/gcc-patches/2026-January/704684.html
Thanks, Richard, for reviewing the other 4 patches in the series. Could I please trouble you to look at this last one for the testsuite as well? It is the last remaining to be reviewed. Thanks! -Lewis On Thu, Jan 1, 2026 at 12:01 PM Lewis Hyatt <[email protected]> wrote: > > In the LTO testsuite, tests run by default with a variety of options. If > the dg-lto-options directive is used, the default list is replaced with just > the requested options, so there is no convenient way, for instance, to add a > given option like -Wall to all of the options being tested. > > This will be handy for testing `#pragma GCC diagnostic' in the next patch in > this series, so this patch adds a new directive dg-lto-additional-options > for that purpose. This keeps the list of options to test unchanged, and > just adds the requested options to all of them. > > gcc/testsuite/ChangeLog: > > * gcc.dg/lto/README: Document dg-lto-additional-options directive. > * lib/lto.exp (lto-get-options-main): Implement > dg-lto-additional-options directive. > (lto-execute-1): Likewise. > --- > gcc/testsuite/gcc.dg/lto/README | 2 ++ > gcc/testsuite/lib/lto.exp | 22 ++++++++++++++++++---- > 2 files changed, 20 insertions(+), 4 deletions(-) > > diff --git a/gcc/testsuite/gcc.dg/lto/README b/gcc/testsuite/gcc.dg/lto/README > index 6777c15766a..1ee8b00dee8 100644 > --- a/gcc/testsuite/gcc.dg/lto/README > +++ b/gcc/testsuite/gcc.dg/lto/README > @@ -8,6 +8,8 @@ The LTO harness recognizes the following special DejaGnu > directives: > * dg-lto-options - the equivalent of dg-options with additional syntax > to support different sets of options for different files compiled > as part of the same test case, > + * dg-lto-additional-options - the equivalent of dg-additional-options; > + adds to the default options instead of overwriting them > * dg-lto-warning - the equivalent of dg-warning for diagnostics expected > to be emitted at LTO link time, > * dg-lto-message - the equivakent of dg-message for informational notes > diff --git a/gcc/testsuite/lib/lto.exp b/gcc/testsuite/lib/lto.exp > index a35a3fc3a74..89c86a0f779 100644 > --- a/gcc/testsuite/lib/lto.exp > +++ b/gcc/testsuite/lib/lto.exp > @@ -492,6 +492,7 @@ proc lto-get-options-main { src } { > > # dg-options sets a variable called dg-extra-tool-flags. > set dg-extra-tool-flags "" > + set lto-additional-tool-flags "" > > # dg-options sets a variable called tool_flags. > set tool_flags "" > @@ -526,6 +527,18 @@ proc lto-get-options-main { src } { > unresolved "$src: $errmsg for \"$op\"" > return > } > + } elseif { [string match "dg-lto-additional-options" $cmd] } { > + set op [lreplace $op 0 0 "dg-additional-options"] > + set saved-dg-extra-tool-flags "${dg-extra-tool-flags}" > + set dg-extra-tool-flags "${lto-additional-tool-flags}" > + set status [catch "$op" errmsg] > + if { $status != 0 } { > + perror "src: $errmsg for \"$op\"\n" > + unresolved "$src: $errmsg for \"$op\"" > + return > + } > + set lto-additional-tool-flags "${dg-extra-tool-flags}" > + set dg-extra-tool-flags "${saved-dg-extra-tool-flags}" > } elseif { ![string compare "dg-xfail-if" $cmd] \ > || ![string compare "dg-options" $cmd] } { > warning "lto.exp does not support $cmd in primary source file" > @@ -595,7 +608,8 @@ proc lto-get-options-main { src } { > # Return flags to use for compiling the primary source file and for > # linking. > verbose "dg-extra-tool-flags for main is ${dg-extra-tool-flags}" > - return ${dg-extra-tool-flags} > + verbose "lto-additional-tool-flags for main is > ${lto-additional-tool-flags}" > + return [list ${dg-extra-tool-flags} ${lto-additional-tool-flags}] > } > > > @@ -677,7 +691,7 @@ proc lto-execute-1 { src1 sid } { > set compile_type "run" > set dg-do-what [list ${dg-do-what-default} "" P] > array set dg-messages-by-file [list] > - set extra_flags(0) [lto-get-options-main $src1] > + lassign [lto-get-options-main $src1] extra_flags(0) additional-flags > set compile_xfail(0) "" > > # If the main file defines dg-options, those flags are used to > @@ -796,7 +810,7 @@ proc lto-execute-1 { src1 sid } { > # Compile pieces with the compiler under test. > set i 0 > foreach src $src_list obj $obj_list { > - lto-obj $src $obj $option $extra_flags($i) $option \ > + lto-obj $src $obj $option "$extra_flags($i) ${additional-flags}" > $option \ > $compile_xfail($i) > incr i > } > @@ -832,7 +846,7 @@ proc lto-execute-1 { src1 sid } { > > lto-link-and-maybe-run \ > "[lindex $obj_list 0]-[lindex $obj_list end]" \ > - $obj_list $execname $filtered ${dg-extra-ld-options} \ > + $obj_list $execname $filtered "${additional-flags} > ${dg-extra-ld-options}" \ > $filtered > > if (![string compare "ar-link" $compile_type]) {
