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
```

Reply via email to