1 /* PR middle-end/48335 */ 2 /* { dg-do compile } */ 3 /* { dg-options "-O2 -fno-tree-sra" } */ 4 5 typedef short U __attribute__((may_alias, aligned (1))); 6 7 struct S 8 { 9 double d; 10 }; 11 12 void bar (struct S); 13 14 void f1(int x)15f1 (int x) 16 { 17 struct S s = { .d = 0.0 }; 18 ((U *)((char *) &s.d + 1))[0] = x; 19 __real__ s.d *= 7.0; 20 bar (s); 21 } 22 23 void f2(int x)24f2 (int x) 25 { 26 struct S s = { .d = 0.0 }; 27 ((U *)((char *) &s.d + 1))[1] = x; 28 __real__ s.d *= 7.0; 29 bar (s); 30 } 31 32 void f3(int x)33f3 (int x) 34 { 35 struct S s = { .d = 0.0 }; 36 ((U *)((char *) &s.d + 1))[2] = x; 37 __real__ s.d *= 7.0; 38 bar (s); 39 } 40 41 void f4(int x)42f4 (int x) 43 { 44 struct S s = { .d = 0.0 }; 45 ((U *)((char *) &s.d + 1))[3] = x; 46 __real__ s.d *= 7.0; 47 bar (s); 48 } 49