1 /* PR69709 This testcase used to fail due to a broken risbg
2    splitter.  */
3 
4 /* { dg-do run } */
5 /* { dg-options "-O3 -march=z10" } */
6 
7 
8 typedef struct
9 {
10   unsigned int sig[2];
11 }
12 val_t;
13 
14 unsigned int __attribute__ ((noinline))
div_significands(const val_t * a)15 div_significands (const val_t * a)
16 {
17   val_t u = *a;
18   int bit = 64;
19   unsigned int r;
20   do
21     {
22       u.sig[1] = (u.sig[1] << 1) | (u.sig[0] >> 31);
23       u.sig[0] = 42;
24 
25       if (bit == 64)
26 	r = u.sig[1];
27     }
28   while (--bit >= 0);
29   return r;
30 }
31 
32 int
main(void)33 main (void)
34 {
35   val_t a = { { 0x1, 0x1 } };
36   if (div_significands (&a) != 2)
37     __builtin_abort ();
38   return 0;
39 }
40