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))
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
33 main (void)
34 {
35 val_t a = { { 0x1, 0x1 } };
36 if (div_significands (&a) != 2)
37 __builtin_abort ();
38 return 0;
39 }