1 /* { dg-do run } */
2 /* { dg-set-target-env-var ASAN_OPTIONS "detect_invalid_pointer_pairs=1:halt_on_error=1" } */
3 /* { dg-options "-fsanitize=address,pointer-compare" } */
4 
foo(char * p,char * q)5 int foo(char *p, char *q) {
6   return p <= q;
7 }
8 
9 char global[8192] = {};
10 char small_global[7] = {};
11 
main()12 int main() {
13   // Heap allocated memory.
14   char *p = (char *)__builtin_malloc(42);
15   int r = foo(p, 0);
16   __builtin_free(p);
17 
18   p = (char *)__builtin_malloc(1024);
19   foo(0, p);
20   __builtin_free(p);
21 
22   p = (char *)__builtin_malloc(4096);
23   foo(p, 0);
24   __builtin_free(p);
25 
26   // Global variable.
27   foo(&global[0], 0);
28   foo(&global[1000], 0);
29 
30   p = &small_global[0];
31   foo(p, 0);
32 
33   // Stack variable.
34   char stack[10000];
35   foo(&stack[0], 0);
36   foo(0, &stack[9000]);
37 
38   return 0;
39 }
40