On Wed, 11 Feb 2026, Richard Biener wrote:
> The following exposes VECT_ADDITIONAL_FLAGS to
> check_vect_support_and_set_flags
> and makes its elements pairs of dg-do-what-default and an option. For
> x86 this adds -mavx2 as proof-of-concept. Ideally we'd have effective
> target checks for -march=x86-64-v[34], but we don't.
>
> I'm posting this for feedback on the TCL - there doesn't seem to be
> a documented minimum version. I have TCL 8.6 where the chosen way
> to concatenate two lists works ([concat ..] somehow does not).
>
> Any feedback on this part?
So trying to debug why gcc.dg/vect/bb-slp-subgroups-2.c effective target
checks on the dg-final line do not work:
/* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" {
target { ! vect256 } } } } */
I figured there's already support for such iteration using
EFFECTIVE_TARGETS. That gets all targets tested with/without -flto
(unless we transition -flto testing to an EFFECTIVE_TARET). But
it also does not fix the above issue. It seems the effective target
options are not applied to check_avx_available which is intended
to check the flags active. That picks up flags specified via
--target_board=unix/-mavx2 for example, but not those from
dg-additional-options for example or supplied via et-dg-runtest.
That makes this a very unpleasant thing. Does anybody know how
to make sure the approprate flags get used for such checks?
Thanks,
Richard.
> The vect.exp testsuite is not yet clean with -mavx2, I am working on
> that though.
>
> Thanks,
> Richard.
>
> * gcc.dg/vect/vect.exp: Make VECT_ADDITIONAL_FLAGS global
> and a list of pairs specifying default dg-do and option.
> * lib/target-supports.exp (check_vect_support_and_set_flags):
> For x86 add -mavx to the set of VECT_ADDITIONAL_FLAGS.
> ---
> gcc/testsuite/gcc.dg/vect/vect.exp | 17 +++++++++++++----
> gcc/testsuite/lib/target-supports.exp | 8 ++++++++
> 2 files changed, 21 insertions(+), 4 deletions(-)
>
> diff --git a/gcc/testsuite/gcc.dg/vect/vect.exp
> b/gcc/testsuite/gcc.dg/vect/vect.exp
> index 025c3360c0d..dacf7b8c44c 100644
> --- a/gcc/testsuite/gcc.dg/vect/vect.exp
> +++ b/gcc/testsuite/gcc.dg/vect/vect.exp
> @@ -29,6 +29,9 @@ set DEFAULT_VECTCFLAGS ""
> global EFFECTIVE_TARGETS
> set EFFECTIVE_TARGETS ""
>
> +global VECT_ADDITIONAL_FLAGS
> +set VECT_ADDITIONAL_FLAGS [list]
> +
> # If the target system supports vector instructions, the default action
> # for a test is 'run', otherwise it's 'compile'. Save current default.
> # Executing vector instructions on a system without hardware vector support
> @@ -67,12 +70,18 @@ set VECT_SLP_CFLAGS $DEFAULT_VECTCFLAGS
> lappend DEFAULT_VECTCFLAGS "-fdump-tree-vect-details"
> lappend VECT_SLP_CFLAGS "-fdump-tree-slp-details"
>
> -# Main loop.
> -set VECT_ADDITIONAL_FLAGS [list ""]
> +# We iterate over VECT_ADDITIONAL_FLAGS, first the default flags, then
> +# possibly check_vect_support_and_set_flags injected and then with LTO
> +set VECT_ADDITIONAL_FLAGS [list [list ${dg-do-what-default} ""] \
> + {*}$VECT_ADDITIONAL_FLAGS]
> if { [check_effective_target_lto] } {
> - lappend VECT_ADDITIONAL_FLAGS "-flto -ffat-lto-objects"
> + lappend VECT_ADDITIONAL_FLAGS [list ${dg-do-what-default} "-flto
> -ffat-lto-objects"]
> }
> -foreach flags $VECT_ADDITIONAL_FLAGS {
> +
> +# Main loop.
> +foreach optset $VECT_ADDITIONAL_FLAGS {
> + set dg-do-what-default [lindex $optset 0]
> + set flags [lindex $optset 1]
> et-dg-runtest dg-runtest [lsort \
> [glob -nocomplain $srcdir/$subdir/pr*.\[cS\]]] \
> $flags $DEFAULT_VECTCFLAGS
> diff --git a/gcc/testsuite/lib/target-supports.exp
> b/gcc/testsuite/lib/target-supports.exp
> index c8791827556..b3f21558871 100644
> --- a/gcc/testsuite/lib/target-supports.exp
> +++ b/gcc/testsuite/lib/target-supports.exp
> @@ -12510,6 +12510,7 @@ proc check_vect_support_and_set_flags { } {
> global DEFAULT_VECTCFLAGS
> global dg-do-what-default
> global EFFECTIVE_TARGETS
> + global VECT_ADDITIONAL_FLAGS
>
> if [istarget powerpc*-*-*] {
> # Skip targets not supporting -maltivec.
> @@ -12548,6 +12549,13 @@ proc check_vect_support_and_set_flags { } {
> } else {
> set dg-do-what-default compile
> }
> + if { [check_effective_target_avx2] } {
> + if { [check_effective_target_avx2_runtime] } {
> + lappend VECT_ADDITIONAL_FLAGS [list run "-mavx2"]
> + } else {
> + lappend VECT_ADDITIONAL_FLAGS [list compile "-mavx2"]
> + }
> + }
> } elseif { [istarget mips*-*-*]
> && [check_effective_target_nomips16] } {
> if { [check_effective_target_mpaired_single "-mpaired-single"] } {
>
--
Richard Biener <[email protected]>
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)