(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
s390/
pr69709.c
       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  }