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