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)

Reply via email to