1 /* { dg-do run { target aarch64*-*-* } } */ 2 /* { dg-options "-O2 --save-temps -fno-inline" } */ 3 /* { dg-require-effective-target aarch64_little_endian } */ 4 5 extern void abort (void); 6 7 typedef struct bitfield 8 { 9 unsigned short eight1: 8; 10 unsigned short four: 4; 11 unsigned short eight2: 8; 12 unsigned short seven: 7; 13 unsigned int sixteen: 16; 14 } bitfield; 15 16 bitfield bfxil(bitfield a)17bfxil (bitfield a) 18 { 19 /* { dg-final { scan-assembler "bfxil\tx\[0-9\]+, x\[0-9\]+, 16, 8" } } */ 20 a.eight1 = a.eight2; 21 return a; 22 } 23 24 int main(void)25main (void) 26 { 27 static bitfield a; 28 bitfield b; 29 30 a.eight1 = 9; 31 a.eight2 = 57; 32 b = bfxil (a); 33 34 if (b.eight1 != a.eight2) 35 abort (); 36 37 return 0; 38 } 39 40