1  // { dg-do compile }
       2  // { dg-options "-Os -fsanitize=signed-integer-overflow -fdump-tree-evrp" }
       3  
       4  // Test that .UBSAN_CHECK_SUB(y, x) is treated as y-x for range
       5  // purposes, where X and Y are related to each other.
       6  //
       7  // This effectively checks that range relationals work with builtins.
       8  
       9  void unreachable();
      10  
      11  int foobar(int x, int y)
      12  {
      13    if (x < y)
      14      {
      15        int z = y - x;
      16        if (z == 0)
      17          unreachable();
      18        return z;
      19      }
      20    return 5;
      21  }
      22  
      23  // { dg-final { scan-tree-dump-not "unreachable" "evrp" } }