/* PR sanitizer/97414 */ /* { dg-do run } */ /* { dg-set-target-env-var ASAN_OPTIONS "detect_invalid_pointer_pairs=1:halt_on_error=1,detect_stack_use_after_return=1" } */ /* { dg-options "-fsanitize=address,pointer-compare,pointer-subtract" } */ [[gnu::noinline]] auto pointer_diff(const int *begin, const int *end) { return end - begin; } int main() { constexpr auto size = (2048 / sizeof(int)) + 1; auto buf = new int[size]; auto end = buf + size; pointer_diff(end, buf); delete[] buf; return 0; }