(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
torture/
pr91656-3.c
       1  /* { dg-do run { target int128 } } */
       2  /* { dg-additional-options "-fgcse-after-reload" } */
       3  
       4  typedef unsigned char u8;
       5  typedef unsigned short u16;
       6  typedef unsigned int u32;
       7  typedef unsigned long long u64;
       8  int a, b, c;
       9  int
      10  d (u16 e, u64 f)
      11  {
      12    b |= e;
      13  #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
      14    __builtin_memset (&f, e, 2);
      15  #elif (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ \
      16         || __BYTE_ORDER__ == __ORDER_PDP_ENDIAN__)
      17    __builtin_memset ((char *) &f + sizeof (f) - 2, e, 2);
      18  #else
      19  #error "endian unknown?"
      20  #endif
      21    a = (u16) - e >= 2 ? : __builtin_popcountll (f);
      22    return a + c;
      23  }
      24  
      25  int
      26  main (void)
      27  {
      28    __int128 x = d (~0, 0);
      29    if (x != 16)
      30      __builtin_abort ();
      31    return 0;
      32  }