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