https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110506
--- Comment #4 from David Binderman <dcb314 at hotmail dot com> --- This C code might be related: typedef unsigned uint32_t; typedef uint32_t uint32x4 __attribute__((vector_size(16))); typedef struct { uint32x4 b, d } prng_t; prng_t prng_rand_128_r_x; main_flags; main() { uint32_t ref_crc[] = {7, 3}; uint32x4 e = (prng_rand_128_r_x.b << 27) + (prng_rand_128_r_x.b >> 32 - 27); prng_rand_128_r_x.d = e; if (ref_crc[main_flags]) __assert_fail(); } $ ~/gcc/results/bin/gcc -c -w -O2 bug936B.c during GIMPLE pass: slp bug936B.c: In function ‘main’: bug936B.c:8:1: internal compiler error: tree check: expected none of vector_type , have vector_type in vect_recog_rotate_pattern, at tree-vect-patterns.cc:3729 8 | main() { | ^~~~ 0x1166129 tree_not_check_failed(tree_node const*, char const*, int, char const*, ...) ../../trunk.year/gcc/tree.cc:8936 0x1cc8da3 vect_recog_rotate_pattern(vec_info*, _stmt_vec_info*, tree_node**) ../../trunk.year/gcc/tree-vect-patterns.cc:0