1 /* PR target/30665: bug in cris.md peephole2 condition. 2 Original reduced testcase (fails on 3.2.1 derivate, not on trunk). */ 3 /* { dg-do run } */ 4 5 extern void abort (void); 6 extern void exit (int); 7 8 struct t 9 { 10 unsigned int a : 12; 11 unsigned int b : 12; 12 unsigned int dummy1 : 8; 13 }; 14 15 struct area 16 { 17 int xa; 18 int xb; 19 }; 20 21 struct c 22 { 23 struct area ii; 24 }; 25 26 static struct c c; 27 g(int a)28void __attribute__ ((__noinline__)) g(int a) 29 { 30 if (a != 79) 31 abort (); 32 } 33 h(struct t tt)34void __attribute__ ((__noinline__)) h(struct t tt) 35 { 36 if (tt.a != 20 || tt.b != 79) 37 abort (); 38 } 39 40 void __attribute__ ((__noinline__)) s(void); 41 main(int argc,char ** argv)42int main(int argc, char **argv) 43 { 44 c.ii.xa = 20; 45 c.ii.xb = 79; 46 47 s(); 48 49 exit (0); 50 } 51 s(void)52void __attribute__ ((__noinline__)) s(void) 53 { 54 struct t ii_x = { .a = c.ii.xa, .b = c.ii.xb }; 55 g(c.ii.xb); 56 h(ii_x); 57 } 58