Hi,

On 23/10/2025 12:56, Richard Biener wrote:
> The following fixes a segfault that appeared with a patch applying
> additional permutes to a reduction SLP instance root.

I just ran into an ICE which looks to be fixed by this patch, would a
reduced testcase be useful?  I can share one if so.  I was surprised to see
there wasn't a PR or test for this patch.

The stacktrace I saw was:

./xgcc -B . -c t.c -S -o /dev/null -O3
during GIMPLE pass: vect
t.c: In function ‘f’:
t.c:3:7: internal compiler error: Segmentation fault
    3 | _Bool f() {
      |       ^
0x25146e7 internal_error(char const*, ...)
        /home/alecop01/toolchain/src/gcc/gcc/diagnostic-global-context.cc:787
0x113a3a3 crash_signal
        /home/alecop01/toolchain/src/gcc/gcc/toplev.cc:323
0x14b45ac vect_analyze_loop_2
        /home/alecop01/toolchain/src/gcc/gcc/tree-vect-loop.cc:2601
0x14b51c7 vect_analyze_loop_1
        /home/alecop01/toolchain/src/gcc/gcc/tree-vect-loop.cc:2790
0x14b5c07 vect_analyze_loop(loop*, gimple*, vec_info_shared*)
        /home/alecop01/toolchain/src/gcc/gcc/tree-vect-loop.cc:2971
0x15419ab try_vectorize_loop_1
        /home/alecop01/toolchain/src/gcc/gcc/tree-vectorizer.cc:1096
0x1541ee7 try_vectorize_loop
        /home/alecop01/toolchain/src/gcc/gcc/tree-vectorizer.cc:1215
0x1542157 execute
        /home/alecop01/toolchain/src/gcc/gcc/tree-vectorizer.cc:1331
Please submit a full bug report, with preprocessed source (by using 
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

Thanks,
Alex

> 
> Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed.
> 
>       * tree-vect-loop.cc (vect_analyze_loop_2): Deal with NULL
>       element in SLP_TREE_SCALAR_STMTS.
> ---
>  gcc/tree-vect-loop.cc | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc
> index 77c9e15601b..7bb1c6baee8 100644
> --- a/gcc/tree-vect-loop.cc
> +++ b/gcc/tree-vect-loop.cc
> @@ -2598,7 +2598,7 @@ again:
>  
>        stmt_vec_info vinfo;
>        vinfo = SLP_TREE_SCALAR_STMTS (SLP_INSTANCE_TREE (instance))[0];
> -      if (! STMT_VINFO_GROUPED_ACCESS (vinfo))
> +      if (!vinfo || !STMT_VINFO_GROUPED_ACCESS (vinfo))
>       continue;
>        vinfo = DR_GROUP_FIRST_ELEMENT (vinfo);
>        unsigned int size = DR_GROUP_SIZE (vinfo);
> -- 
> 2.51.0

Reply via email to