1  /* { dg-do run } */
       2  /* { dg-options "-fsanitize=signed-integer-overflow" } */
       3  
       4  int __attribute__ ((noinline))
       5  foo (int i, int j)
       6  {
       7    return (i + j) - (i | j);
       8  }
       9  
      10  /* { dg-output "signed integer overflow: 2147483647 \\+ 1 cannot be represented in type 'int'\[^\n\r]*(\n|\r\n|\r)" } */
      11  /* { dg-output "\[^\n\r]*signed integer overflow: -2147483648 - 2147483647 cannot be represented in type 'int'\[^\n\r]*(\n|\r\n|\r)" } */
      12  
      13  int __attribute__ ((noinline))
      14  bar (int i, int j)
      15  {
      16    return (i + j) - (i & j);
      17  }
      18  
      19  /* { dg-output "\[^\n\r]*signed integer overflow: 2147483647 \\+ 1 cannot be represented in type 'int'\[^\n\r]*(\n|\r\n|\r)" } */
      20  /* { dg-output "\[^\n\r]*signed integer overflow: -2147483648 - 1 cannot be represented in type 'int'" } */
      21  
      22  int
      23  main ()
      24  {
      25    int r = foo (__INT_MAX__, 1);
      26    asm volatile ("" : "+g" (r));
      27    r = bar (__INT_MAX__, 1);
      28    asm volatile ("" : "+g" (r));
      29    return 0;
      30  }