/* { dg-do compile } */
/* { dg-options "-march=rv64gc -mabi=lp64d -O2" } */

/* Fails if lshrsi3_zero_extend_3+1 uses a temp reg which has no REG_DEST
   note.  */
unsigned long
sub (long l)
{
  union u {
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
    struct s { int a : 19; unsigned int b : 13; int x; } s;
#else
    struct s { int x; unsigned int b : 13; int a : 19; } s;
#endif
    long l;
  } u;
  u.l = l;
  return u.s.b;
}
/* { dg-final { scan-assembler "srliw" } } */