/* { dg-do run } */ /* { dg-set-target-env-var ASAN_OPTIONS "detect_invalid_pointer_pairs=1:halt_on_error=1" } */ /* { dg-options "-fsanitize=address,pointer-compare" } */ int foo(char *p, char *q) { return p <= q; } char global[8192] = {}; char small_global[7] = {}; int main() { // Heap allocated memory. char *p = (char *)__builtin_malloc(42); int r = foo(p, 0); __builtin_free(p); p = (char *)__builtin_malloc(1024); foo(0, p); __builtin_free(p); p = (char *)__builtin_malloc(4096); foo(p, 0); __builtin_free(p); // Global variable. foo(&global[0], 0); foo(&global[1000], 0); p = &small_global[0]; foo(p, 0); // Stack variable. char stack[10000]; foo(&stack[0], 0); foo(0, &stack[9000]); return 0; }