compare.c revision 149f1386c60aa07de0f6a5d43ab524b22af68059
1// RUN: clang-cc -fsyntax-only -pedantic -verify %s
2
3int test(char *C) { // nothing here should warn.
4  return C != ((void*)0);
5  return C != (void*)0;
6  return C != 0;
7}
8
9int equal(char *a, const char *b)
10{
11    return a == b;
12}
13
14int arrays(char (*a)[5], char(*b)[10], char(*c)[5]) {
15  int d = (a == c);
16  return a == b; // expected-warning {{comparison of distinct pointer types}}
17}
18
19int pointers(int *a)
20{
21  return a > 0; // expected-warning {{ordered comparison between pointer and integer}}
22  return a > (void *)0; // expected-warning {{comparison of distinct pointer types}}
23}
24
25int function_pointers(int (*a)(int), int (*b)(int))
26{
27  return a > b; // expected-warning {{ordered comparison of function pointers}}
28  return function_pointers > function_pointers; // expected-warning {{ordered comparison of function pointers}}
29  return a == (void *) 0;
30  return a == (void *) 1; // expected-warning {{comparison of distinct pointer types}}
31}
32