https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117811
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Known to work|11.2.0, 11.4.0 | Known to fail| |9.1.0 --- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Another testcase: ``` typedef int v4 __attribute__((vector_size(4*sizeof(int)))); void buggy_shift( v4 *vec, int shift ) { v4 t = *vec; if ( shift > 0 ) { t = t >> shift; } *vec = t; } ``` This was broken in GCC 9+. Before GCC would produce: ``` asr r8, r4, r1 asr r9, r5, r1 asr r10, r6, r1 asr r1, r7, r1 mov r4, r8 mov r5, r9 mov r6, r10 mov r7, r1 ```