| /* PR69709 This testcase used to fail due to a broken risbg |
| splitter. */ |
| |
| /* { dg-do run } */ |
| /* { dg-options "-O3 -march=z10" } */ |
| |
| |
| typedef struct |
| { |
| unsigned int sig[2]; |
| } |
| val_t; |
| |
| unsigned int __attribute__ ((noinline)) |
| div_significands (const val_t * a) |
| { |
| val_t u = *a; |
| int bit = 64; |
| unsigned int r; |
| do |
| { |
| u.sig[1] = (u.sig[1] << 1) | (u.sig[0] >> 31); |
| u.sig[0] = 42; |
| |
| if (bit == 64) |
| r = u.sig[1]; |
| } |
| while (--bit >= 0); |
| return r; |
| } |
| |
| int |
| main (void) |
| { |
| val_t a = { { 0x1, 0x1 } }; |
| if (div_significands (&a) != 2) |
| __builtin_abort (); |
| return 0; |
| } |