61 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify %s2 3class Base { };4class Derived1 : public Base { };5class Derived2 : public Base { };6 7void f0(volatile Base *b, Derived1 *d1, const Derived2 *d2) {8 if (b > d1)9 return;10 if (d1 <= b)11 return;12 if (b > d2)13 return;14 if (d1 >= d2) // expected-error{{comparison of distinct}}15 return;16}17 18void f1(volatile Base *b, Derived1 *d1, const Derived2 *d2) {19 if (b == d1)20 return;21 if (d1 == b)22 return;23 if (b != d2)24 return;25 if (d1 == d2) // expected-error{{comparison of distinct}}26 return;27}28 29// PR469130int ptrcmp1(void *a, int *b) {31 return a < b;32}33int ptrcmp2(long *a, int *b) {34 return a < b; // expected-error{{distinct}}35}36 37// PR5509 - Multi-level pointers38int f2() {39 typedef int *IntPtr;40 typedef IntPtr *IntPtrPtr;41 typedef IntPtr const *IntPtrConstPtr;42 IntPtrConstPtr i = 0;43 IntPtrPtr j = 0;44 return i != j;45}46 47// PR576348typedef double Matrix4[4][4];49 50bool f(Matrix4 m1, const Matrix4 m2) {51 return m1 != m2;52}53 54// PR634655bool f1(bool b, void **p, const void **q) {56 if (p == q)57 return false;58 59 return b? p : q;60}61