> -----Original Message----- > From: Richard Biener <[email protected]> > Sent: 17 February 2026 12:44 > To: Tamar Christina <[email protected]> > Cc: [email protected]; nd <[email protected]>; [email protected] > Subject: RE: [PATCH][RFC][vect]: Support running vect.exp in multiple > different > configuration > > On Tue, 17 Feb 2026, Tamar Christina wrote: > > > > -----Original Message----- > > > From: Richard Biener <[email protected]> > > > Sent: 17 February 2026 12:26 > > > To: Tamar Christina <[email protected]> > > > Cc: [email protected]; nd <[email protected]>; [email protected] > > > Subject: Re: [PATCH][RFC][vect]: Support running vect.exp in multiple > different > > > configuration > > > > > > On Mon, 16 Feb 2026, Tamar Christina wrote: > > > > > > > This is a proof of concept addressing some of the issues Richi pointed > > > > out > > > before. > > > > > > > > In particular the extra vect options are now taken part of the cache > > > > key as > > > well > > > > so we re-evaluate all the different effective targets tests for them > > > > while > > > running > > > > under vect.exp. > > > > > > > > The attached patch produces > > > > > > > > Processing option: dg-add-options 1 vect_early_break > > > > check_cached_effective_target_index vect_early_break: returning 0 - > ftree- > > > vectorize -fno-tree-loop-distribute-patterns -fno-vect-cost-model -fno- > > > common -O2 -fdump-tree-vect-details vect_early_break > > > > Processing option: dg-add-options 1 vect_early_break > > > > check_cached_effective_target_index vect_early_break: returning 0 - > > > march=armv8-a+sve -ftree-vectorize -fno-tree-loop-distribute-patterns - > fno- > > > vect-cost-model -fno-common -O2 -fdump-tree-vect-details > vect_early_break > > > > > > > > does this do what you wanted Richi? > > > > > > I think this will still have the issue that tests like > > > gcc.dg/vect/bb-slp-subgroups-2.c which have dump scans like > > > > > > /* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" { > > > target { ! vect256 } } } } */ > > > /* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" { > > > target { vect256 } } } } */ > > > > > > > I'm not sure it will, since vect256 will be re-evaluated if `-maxv2 is part > > of the > > torture. > > > > > and ultimatively end up invoking check_avx_available will not work > > > correctly for a -mavx2 torture option since > > > > > > proc check_avx_available { } { > > > if { [check_no_compiler_messages avx_available assembly { > > > #ifndef __AVX__ > > > #error unsupported > > > #endif > > > } ""] } { > > > return 1; > > > } > > > return 0; > > > } > > > > > > will not have -mavx2 included in the set of options fed in via > > > VECT_ADDITIONAL_FLAGS (nor are flags set via EFFECTIVE_TARGETS). > > > It's only flags from the RUNTESTFLAGS environment that seem to reach > > > there. Thus, --target_board=unix/{,-mavx2} works, but nothing else. > > > > > > > Are you sure? > > > > The above proc has > > > > proc check_no_compiler_messages {prop args} { > > return [check_cached_effective_target $prop { > > eval [list check_no_compiler_messages_nocache $prop] $args > > }] > > } > > > > So it calls down to check_cached_effective_target which appends prop. > > > > The patch changes check_cached_effective_target to do > > > > set target "[current_target_name] $vect_torture_flags" > > > > so `-mavx2` will be added *as if* it was part of current_target_name, > > which is what --target_board=unix/{,-mavx2} defines. > > > > So did you test out the patch and it didn't work? If so can you send me > > the version you tested so I can debug. > > Yes, it didn't work. I used the patch below. > > > make check-g++ RUNTESTFLAGS="--target_board=unix/-m32 > dg.exp=Wtime_t-1.c" > ... > FAIL: gcc.dg/vect/bb-slp-subgroups-2.c -mavx2 scan-tree-dump-times slp2 > "optimized: basic block" 2 > FAIL: gcc.dg/vect/bb-slp-subgroups-2.c -flto -ffat-lto-objects -mavx2 > scan-tree-dump-times slp2 "optimized: basic block" 2 > > and from the log: > > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -mavx2 execution test > PASS: gcc.dg/vect/bb-slp-subgroups-2.c -mavx2 scan-tree-dump-times slp2 > "Basic block will be vectorized using SLP" 1 > Executing on host: /spc/abuild/rguenther/obj-gcc-clean-g/gcc/xgcc > -B/spc/abuild/rguenther/obj-gcc-clean-g/gcc/ avx_available6869.c > -fdiagnostics-plain-output -Wno-complain-wrong-lang -S -o > avx_available6869.s (timeout = 300) > spawn -ignore SIGHUP /spc/abuild/rguenther/obj-gcc-clean-g/gcc/xgcc > -B/spc/abuild/rguenther/obj-gcc-clean-g/gcc/ avx_available6869.c > -fdiagnostics-plain-output -Wno-complain-wrong-lang -S -o > avx_available6869.s^M > avx_available6869.c:3:6: error: #error unsupported^M > compiler exited with status 1 > > so the avx_available check does not get -mavx2 (it also doesn't > get the targets DEFAULT_VECTCFLAGS which includes -msse2). At least > it re-evaluates the test with the patch.
Thanks! Will debug and be back tomorrow 😊 Cheers, Tamar > > Richard. > > From 550378c218606f6f824dee210b42fc81c7552f52 Mon Sep 17 00:00:00 > 2001 > From: Richard Biener <[email protected]> > Date: Tue, 17 Feb 2026 13:39:17 +0100 > Subject: [PATCH] stash > To: [email protected] > > --- > gcc/testsuite/gcc.dg/vect/vect.exp | 36 ++++++++++++++++++++++++++- > gcc/testsuite/lib/target-supports.exp | 8 +++++- > 2 files changed, 42 insertions(+), 2 deletions(-) > > diff --git a/gcc/testsuite/gcc.dg/vect/vect.exp > b/gcc/testsuite/gcc.dg/vect/vect.exp > index 958156b6ae0..44fe4f866d9 100644 > --- a/gcc/testsuite/gcc.dg/vect/vect.exp > +++ b/gcc/testsuite/gcc.dg/vect/vect.exp > @@ -67,12 +67,46 @@ 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 ""] > if { [check_effective_target_lto] } { > lappend VECT_ADDITIONAL_FLAGS "-flto -ffat-lto-objects" > } > + > +# Set target specific vect torture options > +if { [istarget aarch64*-*-*] } { > + set TORTURE_OPTIONS [list \ > + {-march=armv8-a} \ > + {-march=armv8-a+sve} \ > + {-march=armv8-a+sve -msve-vector-bits=128} \ > + {-march=armv8-a+sve -msve-vector-bits=256} \ > + {-march=armv9-a} \ > + ] > +} > +if { [istarget x86_64-*-*] } { > + set TORTURE_OPTIONS [list {-mavx2} ] > +} > + > +# Allow TORTURE_OPTIONS to add extra flag sets on top of the existing ones. > +if {[info exists TORTURE_OPTIONS]} { > + set base_vect_additional_flags $VECT_ADDITIONAL_FLAGS > + set VECT_ADDITIONAL_FLAGS [list] > + foreach base_flags $base_vect_additional_flags { > + lappend VECT_ADDITIONAL_FLAGS $base_flags > + foreach torture_flags $TORTURE_OPTIONS { > + if {$base_flags eq ""} { > + lappend VECT_ADDITIONAL_FLAGS $torture_flags > + } else { > + lappend VECT_ADDITIONAL_FLAGS [concat $base_flags > $torture_flags] > + } > + } > + } > +} > + > + > +# Main loop. > foreach flags $VECT_ADDITIONAL_FLAGS { > + set ::vect_torture_flags [concat $flags $DEFAULT_VECTCFLAGS] > + > set tests "" > foreach file [glob -nocomplain $srcdir/$subdir/*.\[cS\]] { > if { ! [string match $srcdir/$subdir/bb-slp-*.\[cS\] $file] } { > diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target- > supports.exp > index c8791827556..089081b3a64 100644 > --- a/gcc/testsuite/lib/target-supports.exp > +++ b/gcc/testsuite/lib/target-supports.exp > @@ -139,8 +139,14 @@ proc current_target_name { } { > > proc check_cached_effective_target { prop args } { > global et_cache > + global vect_torture_flags > + if {![info exists vect_torture_flags]} { > + set vect_torture_flags "" > + } > > - set target [current_target_name] > + # Make the cache key depend on the actual target name plus any vect > torture > + # flags in effect. > + set target "[current_target_name] $vect_torture_flags" > if {![info exists et_cache($prop,$target)]} { > verbose "check_cached_effective_target $prop: checking $target" 2 > if {[string is true -strict $args] || [string is false -strict $args]} { > -- > 2.51.0
