(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
int128-1.c
       1  /* { dg-do run { target int128 } } */
       2  /* { dg-options "-std=gnu99" { target c } } */
       3  /* { dg-options "" { target c++ } } */
       4  
       5  #include <stdarg.h>
       6  
       7  #ifndef __cplusplus
       8  extern void abort (void);
       9  #else
      10  extern "C" void abort (void);
      11  #endif
      12  
      13  #define MK_CONST128(A,B,C,D) \
      14          ( (((unsigned __int128) (unsigned int) A) << 96) \
      15           | (((unsigned __int128) (unsigned int) B) << 64) \
      16           | (((unsigned __int128) (unsigned int) C) << 32) \
      17           | ((unsigned __int128) (unsigned int) D) )
      18  
      19  #define MK_CONST128_SIGNED(A,B,C,D) \
      20          ((__int128) MK_CONST128(A, B, C, D))
      21  
      22  void foo(int i, ...)
      23  {
      24    __int128 q;
      25    va_list va;
      26  
      27    va_start(va, i);
      28    q = va_arg(va, __int128);
      29    va_end(va);
      30  
      31    if (q != MK_CONST128_SIGNED (0xfeffffffU, 2U, 3U, 4U))
      32      abort();
      33  }
      34  
      35  int main(void)
      36  {
      37    __int128 q = MK_CONST128_SIGNED (0xfeffffffU, 2U, 3U, 4U);
      38  
      39    foo(1, q);
      40    return 0;
      41  }