https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104497
--- Comment #1 from jbeulich at suse dot com --- Actually, while trying to determine if there's any kind of workaround for the actual code where the prior example was derived from, I found that this can be further simplified: typedef float __attribute__((mode(SF), vector_size(16))) vec_t; extern vec_t src, inv; void init(vec_t *x, unsigned i) { (*x)[i] = (i & 1 ? inv : src)[i]; } Producing a somewhat different stack trace: $ gccver=11.2.0-base gccx -Wall -W -Os -msse2 -c simd-test2.c during GIMPLE pass: pre simd-test2.c: In function ‘init’: simd-test2.c:8:6: internal compiler error: Segmentation fault 8 | void init(vec_t *x, unsigned i) { | ^~~~ 0x877d21a crash_signal /usr/local/src/gcc-11.2.0/gcc/toplev.c:327 0x88d39c5 pre_expr_DFS /usr/local/src/gcc-11.2.0/gcc/tree-ssa-pre.c:825 0x88d3e45 sorted_array_from_bitmap_set /usr/local/src/gcc-11.2.0/gcc/tree-ssa-pre.c:906 0x88d409f clean /usr/local/src/gcc-11.2.0/gcc/tree-ssa-pre.c:2009 0x88da33d compute_antic /usr/local/src/gcc-11.2.0/gcc/tree-ssa-pre.c:2519 0x88da33d execute /usr/local/src/gcc-11.2.0/gcc/tree-ssa-pre.c:4386