https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121869
Bug ID: 121869
Summary: [16 regression] SEGV in vect_can_advance_ivs_p
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: ro at gcc dot gnu.org
CC: rguenth at gcc dot gnu.org
Target Milestone: ---
Target: sparc-sun-solaris2.11
Between 20250905 (6b6a2d461bfd3c81cc35c9989b225845681357cb) and 20250908
(2abfcc6cfc9cd82fbbef47f2b03ee7595277023e),
Solaris/SPARC bootstrap got broken compiling libgo:
$ go1 libgo/go/crypto/elliptic/elliptic.go libgo/go/crypto/elliptic/p224.go
libgo/go/crypto/elliptic/p256.go libgo/go/crypto/elliptic/p256_generic.go
libgo/go/crypto/elliptic/p384.go libgo/go/crypto/elliptic/p521.go -quiet
-mcpu=ultrasparc3 -g -O2 -fchecking=1 -fgo-pkgpath=crypto/elliptic -fPIC
during GIMPLE pass: vect
/vol/gcc/src/hg/master/local/libgo/go/crypto/elliptic/p256.go: In function
‘crypto/elliptic.p256Curve.ScalarBaseMult’:
/vol/gcc/src/hg/master/local/libgo/go/crypto/elliptic/p256.go:66:1: internal
compiler error: Segmentation Fault
66 | func (p256Curve) ScalarBaseMult(scalar []byte) (x, y *big.Int) {
| ^
0x21a6d83 internal_error(char const*, ...)
/vol/gcc/src/hg/master/local/gcc/diagnostic-global-context.cc:786
0x1114f0f crash_signal
/vol/gcc/src/hg/master/local/gcc/toplev.cc:323
0x14eb6cc iv_phi_p
/vol/gcc/src/hg/master/local/gcc/tree-vect-loop-manip.cc:2124
0x14eb6cc vect_can_advance_ivs_p(_loop_vec_info*)
/vol/gcc/src/hg/master/local/gcc/tree-vect-loop-manip.cc:2239
0x14f485b vect_do_peeling(_loop_vec_info*, tree_node*, tree_node*, tree_node**,
tree_node**, tree_node**, int, bool, bool, tree_node**)
/vol/gcc/src/hg/master/local/gcc/tree-vect-loop-manip.cc:3565
0x14c9bab vect_transform_loop(_loop_vec_info*, gimple*)
/vol/gcc/src/hg/master/local/gcc/tree-vect-loop.cc:11111
0x153a08b vect_transform_loops
/vol/gcc/src/hg/master/local/gcc/tree-vectorizer.cc:1036
0x153a84f try_vectorize_loop_1
/vol/gcc/src/hg/master/local/gcc/tree-vectorizer.cc:1185
0x153a84f try_vectorize_loop
/vol/gcc/src/hg/master/local/gcc/tree-vectorizer.cc:1215
0x153b1cb execute
/vol/gcc/src/hg/master/local/gcc/tree-vectorizer.cc:1331
gdb shows
Thread 2 received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1 (LWP 1)]
vect_can_advance_ivs_p (loop_vinfo=0x2e9db30)
at /vol/gcc/src/hg/master/local/gcc/tree-vect-loop-manip.cc:2239
2239 if (!iv_phi_p (phi_info))
phi_info is 0x0
(gdb) bt
#0 vect_can_advance_ivs_p (loop_vinfo=0x2e9db30)
at /vol/gcc/src/hg/master/local/gcc/tree-vect-loop-manip.cc:2239
#1 0x014f485c in vect_do_peeling (loop_vinfo=0x2e9db30,
niters=<optimized out>, nitersm1=<optimized out>,
niters_vector=<optimized out>, step_vector=<optimized out>,
niters_vector_mult_vf_var=<optimized out>, th=<optimized out>,
check_profitability=<optimized out>, niters_no_overflow=true,
advance=<optimized out>)
at /vol/gcc/src/hg/master/local/gcc/tree-vect-loop-manip.cc:3565
#2 0x014c9bac in vect_transform_loop (loop_vinfo=0x2e9db30,
loop_vectorized_call=<optimized out>)
at /vol/gcc/src/hg/master/local/gcc/tree-vect-loop.cc:11111
#3 0x0153a08c in vect_transform_loops (simduid_to_vf_htab=@0xffbfe38c: 0x0,
loop=0xfa8287c0, loop_vectorized_call=<gimple 0x0>, fun=0xfac1b680)
at /vol/gcc/src/hg/master/local/gcc/tree-vectorizer.cc:1036
#4 0x0153a850 in try_vectorize_loop_1 (simduid_to_vf_htab=@0xffbfe38c: 0x0,
num_vectorized_loops=0xffbfe388, loop=0xfa8287c0,
loop_vectorized_call=<gimple 0x0>, loop_dist_alias_call=<gimple 0x0>,
fun=0xfac1b680) at /vol/gcc/src/hg/master/local/gcc/tree-vectorizer.cc:1185
#5 try_vectorize_loop (simduid_to_vf_htab=@0xffbfe38c: 0x0,
num_vectorized_loops=0xffbfe388, loop=0xfa8287c0, fun=0xfac1b680)
at /vol/gcc/src/hg/master/local/gcc/tree-vectorizer.cc:1215
#6 0x0153b1cc in (anonymous namespace)::pass_vectorize::execute (
this=<optimized out>, fun=0xfac1b680)
at /vol/gcc/src/hg/master/local/gcc/tree-vectorizer.cc:1331
#7 0x00f9a8dc in execute_one_pass (pass=<opt_pass* 0x289b620 "vect"(189)>)
at /vol/gcc/src/hg/master/local/gcc/passes.cc:2648
#8 0x00f9b3ec in execute_pass_list_1 (pass=<opt_pass* 0x289b620 "vect"(189)>)
at /vol/gcc/src/hg/master/local/gcc/passes.cc:2757
#9 0x00f9b410 in execute_pass_list_1 (pass=<opt_pass* 0x289b088 "loop"(167)>)
at /vol/gcc/src/hg/master/local/gcc/passes.cc:2758
#10 0x00f9b410 in execute_pass_list_1 (
pass=<opt_pass* 0x289a158 "*all_optimizations"(-1)>)
at /vol/gcc/src/hg/master/local/gcc/passes.cc:2758
#11 0x00f9b480 in execute_pass_list (fn=0xfac1b680,
pass=<opt_pass* 0x2899f18 "fixup_cfg"(106)>)
at /vol/gcc/src/hg/master/local/gcc/passes.cc:2768
#12 0x00a4a9ec in cgraph_node::expand (
this=<cgraph_node * const 0xfadff900
"crypto/elliptic.p256Curve.ScalarBaseMult"/582>) at
/vol/gcc/src/hg/master/local/gcc/context.h:48
#13 cgraph_node::expand (
this=<cgraph_node * const 0xfadff900
"crypto/elliptic.p256Curve.ScalarBaseMult"/582>) at
/vol/gcc/src/hg/master/local/gcc/cgraphunit.cc:1812
#14 0x00a4d328 in expand_all_functions ()
at /vol/gcc/src/hg/master/local/gcc/cgraphunit.cc:2042
#15 symbol_table::compile (this=0xfac12000)
at /vol/gcc/src/hg/master/local/gcc/cgraphunit.cc:2419
#16 0x00a50904 in symbol_table::compile (this=0xfac12000)
at /vol/gcc/src/hg/master/local/gcc/cgraphunit.cc:2329
#17 symbol_table::finalize_compilation_unit (this=0xfac12000)
at /vol/gcc/src/hg/master/local/gcc/cgraphunit.cc:2608
#18 0x011159c0 in compile_file ()
at /vol/gcc/src/hg/master/local/gcc/toplev.cc:480
#19 0x011195e0 in do_compile ()
at /vol/gcc/src/hg/master/local/gcc/toplev.cc:2222
#20 toplev::main (this=<optimized out>, argc=<optimized out>,
argv=<optimized out>) at /vol/gcc/src/hg/master/local/gcc/toplev.cc:2385
#21 0x021789c4 in main (argc=26, argv=0xffbfe904)
at /vol/gcc/src/hg/master/local/gcc/main.cc:39
It seems likely that this is due to
bbef47f2b03ee7595277023e gcc/tree-vect-loop-manip.cc
commit a632becefad29206a980cc080eee74ed808f9cd3
Author: Richard Biener <[email protected]>
Date: Mon Sep 8 12:40:30 2025 +0200
tree-optimization/121829 - bogus CFG with asm goto