(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
absu.c
       1  
       2  /* { dg-do run  } */
       3  /* { dg-options "-O0" } */
       4  
       5  #include <limits.h>
       6  #define ABS(x)	(((x) >= 0) ? (x) : -(x))
       7  
       8  #define DEF_TEST(TYPE)	\
       9  void foo_##TYPE (signed TYPE x, unsigned TYPE y){	\
      10      TYPE t = ABS (x);				\
      11      if (t != y)					\
      12   	__builtin_abort ();			\
      13  }						\
      14  
      15  DEF_TEST (char);
      16  DEF_TEST (short);
      17  DEF_TEST (int);
      18  DEF_TEST (long);
      19  
      20  int main ()
      21  {
      22    foo_char (SCHAR_MIN + 1, SCHAR_MAX);
      23    foo_char (0, 0);
      24    foo_char (-1, 1);
      25    foo_char (1, 1);
      26    foo_char (SCHAR_MAX, SCHAR_MAX);
      27  
      28    foo_int (-1, 1);
      29    foo_int (0, 0);
      30    foo_int (INT_MAX, INT_MAX);
      31    foo_int (INT_MIN + 1, INT_MAX);
      32  
      33    foo_short (-1, 1);
      34    foo_short (0, 0);
      35    foo_short (SHRT_MAX, SHRT_MAX);
      36    foo_short (SHRT_MIN + 1, SHRT_MAX);
      37  
      38    foo_long (-1, 1);
      39    foo_long (0, 0);
      40    foo_long (LONG_MAX, LONG_MAX);
      41    foo_long (LONG_MIN + 1, LONG_MAX);
      42  
      43    return 0;
      44  }
      45