(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
ubsan/
div-by-zero-7.c
       1  /* { dg-do run } */
       2  /* { dg-options "-fsanitize=integer-divide-by-zero -Wno-div-by-zero -fno-sanitize-recover=integer-divide-by-zero" } */
       3  /* { dg-options "-fsanitize=integer-divide-by-zero -Wno-div-by-zero -fno-sanitize-recover=integer-divide-by-zero -Wno-volatile" { target c++ } } */
       4  /* { dg-shouldfail "ubsan" } */
       5  
       6  #include <stdio.h>
       7  
       8  int x;
       9  
      10  __attribute__((noinline, noclone))
      11  void
      12  barrier (void)
      13  {
      14    asm volatile ("" : : : "memory");
      15    if (++x == 3)
      16      __builtin_exit (0);
      17  }
      18  
      19  int
      20  main (void)
      21  {
      22    volatile int a = 0;
      23    volatile long long int b = 0;
      24    volatile unsigned int c = 1;
      25  
      26    barrier (); fputs ("1st\n", stderr); barrier ();
      27    a / b;
      28    barrier (); fputs ("2nd\n", stderr); barrier ();
      29    0 / 0;
      30    barrier (); fputs ("3rd\n", stderr); barrier ();
      31    a / 0;
      32    barrier (); fputs ("4th\n", stderr); barrier ();
      33    0 / b;
      34    barrier (); fputs ("5th\n", stderr); barrier ();
      35    2 / --c;
      36    barrier (); fputs ("6th\n", stderr); barrier ();
      37  
      38    return 0;
      39  }
      40  
      41  /* { dg-output "1st(\n|\r\n|\r)" } */
      42  /* { dg-output "\[^\n\r]*division by zero" } */