1 /* { dg-do run } */ 2 /* { dg-options "-O2 -fipa-sra" } */ 3 4 5 struct __attribute__((scalar_storage_order("little-endian"))) LE 6 { 7 int i; 8 int j; 9 }; 10 11 struct __attribute__((scalar_storage_order("big-endian"))) BE 12 { 13 int i; 14 int j; 15 }; 16 17 struct LE gle; 18 struct BE gbe; 19 20 #define VAL 0x12345678 21 22 void __attribute__((noipa)) fill(void)23fill (void) 24 { 25 gle.i = VAL; 26 gle.j = 0xdeadbeef; 27 gbe.i = VAL; 28 gbe.j = 0x11223344; 29 } 30 31 static int __attribute__((noinline)) readLE(struct LE p)32readLE (struct LE p) 33 { 34 return p.i; 35 } 36 37 static int __attribute__((noinline)) readBE(struct BE p)38readBE (struct BE p) 39 { 40 return p.i; 41 } 42 43 int main(int argc,char * argv[])44main (int argc, char *argv[]) 45 { 46 int r; 47 fill (); 48 49 r = readLE (gle); 50 if (r != VAL) 51 __builtin_abort (); 52 r = readBE (gbe); 53 if (r != VAL) 54 __builtin_abort (); 55 56 return 0; 57 } 58