1 /* PR debug/51695 */ 2 /* { dg-do compile { target { int32plus } } } */ 3 /* { dg-options "-O2 -g" } */ 4 5 typedef struct 6 { 7 struct { unsigned int t1, t2, t3, t4, t5, t6; } t; 8 int p; 9 struct { double X, Y, Z; } r; 10 } T; 11 typedef struct { T *h; } S; 12 13 static unsigned int v = 0x12345678; 14 15 int foo(void)16foo (void) 17 { 18 v = (v & 0x80000000) ? ((v << 1) ^ 0xa398655d) : (v << 1); 19 return 0; 20 } 21 22 double bar(void)23bar (void) 24 { 25 unsigned int o; 26 v = (v & 0x80000000) ? ((v << 1) ^ 0xa398655d) : (v << 1); 27 o = v & 0xffff; 28 return (double) o / 32768.0; 29 } 30 31 int baz(void)32baz (void) 33 { 34 foo (); 35 return 0; 36 } 37 38 void test(S * x)39test (S *x) 40 { 41 T *t = x->h; 42 t->t.t1 = foo (); 43 t->t.t2 = foo (); 44 t->t.t3 = foo (); 45 t->t.t4 = foo (); 46 t->t.t5 = foo (); 47 t->t.t6 = foo (); 48 t->p = baz (); 49 t->r.X = bar (); 50 t->r.Y = bar (); 51 t->r.Z = bar (); 52 } 53