composite-pointer-type.cpp revision 30eed0fc54c3ac046a7cf9e41aaf75c2a177640b
130eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor// RUN: clang-cc -fsyntax-only -verify %s 230eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor 330eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregorclass Base { }; 430eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregorclass Derived1 : public Base { }; 530eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregorclass Derived2 : public Base { }; 630eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor 730eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregorvoid f0(volatile Base *b, Derived1 *d1, const Derived2 *d2) { 830eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor if (b > d1) 930eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor return; 1030eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor if (d1 <= b) 1130eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor return; 1230eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor if (b > d2) 1330eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor return; 1430eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor if (d1 >= d2) // expected-error{{comparison of distinct}} 1530eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor return; 1630eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor} 1730eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor 1830eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregorvoid f1(volatile Base *b, Derived1 *d1, const Derived2 *d2) { 1930eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor if (b == d1) 2030eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor return; 2130eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor if (d1 == b) 2230eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor return; 2330eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor if (b != d2) 2430eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor return; 2530eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor if (d1 == d2) // expected-error{{comparison of distinct}} 2630eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor return; 2730eed0fc54c3ac046a7cf9e41aaf75c2a177640bDouglas Gregor} 28