(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
ubsan/
builtin-1.c
       1  /* { dg-do run } */
       2  /* { dg-options "-fsanitize=undefined" } */
       3  
       4  #include <stdio.h>
       5  
       6  __attribute__((noinline, noclone)) unsigned long long
       7  foo (unsigned int x, unsigned long int y, unsigned long long int z, __UINTMAX_TYPE__ w)
       8  {
       9    unsigned long long ret = 0;
      10    fprintf (stderr, "FOO MARKER1\n");
      11    ret += __builtin_ctz (x);
      12    ret += __builtin_ctzl (y);
      13    ret += __builtin_ctzll (z);
      14    ret += __builtin_ctzimax (w);
      15    fprintf (stderr, "FOO MARKER2\n");
      16    ret += __builtin_clz (x);
      17    ret += __builtin_clzl (y);
      18    ret += __builtin_clzll (z);
      19    ret += __builtin_clzimax (w);
      20    fprintf (stderr, "FOO MARKER3\n");
      21    return ret;
      22  }
      23  
      24  int
      25  main ()
      26  {
      27    volatile __UINTMAX_TYPE__ t = 0;
      28    t = foo (t, t, t, t);
      29    return 0;
      30  }
      31  
      32  /* { dg-output "FOO MARKER1(\n|\r\n|\r)" } */
      33  /* { dg-output "(\[^\n\r]*runtime error: passing zero to ctz\\\(\\\), which is not a valid argument\[^\n\r]*(\n|\r\n|\r)){4}" } */
      34  /* { dg-output "FOO MARKER2(\n|\r\n|\r)" } */
      35  /* { dg-output "(\[^\n\r]*runtime error: passing zero to clz\\\(\\\), which is not a valid argument\[^\n\r]*(\n|\r\n|\r)){4}" } */
      36  /* { dg-output "FOO MARKER3" } */