// { dg-do compile } // { dg-options "-Os -fsanitize=signed-integer-overflow -fdump-tree-evrp" } // Test that .UBSAN_CHECK_SUB(y, x) is treated as y-x for range // purposes, where X and Y are related to each other. // // This effectively checks that range relationals work with builtins. void unreachable(); int foobar(int x, int y) { if (x < y) { int z = y - x; if (z == 0) unreachable(); return z; } return 5; } // { dg-final { scan-tree-dump-not "unreachable" "evrp" } }