// { dg-do run } // Test rtti pointer flags // Copyright (C) 2000, 2002 Free Software Foundation, Inc. // Contributed by Nathan Sidwell 15 Apr 2000 #include #if defined (__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 #include struct A {int m;}; struct B; using namespace abi; int expect (int flags, std::type_info const &info) { abi::__pbase_type_info const *ptr = dynamic_cast (&info); if (!ptr) return 0; if (ptr->__flags != flags) return 0; return 1; } int main () { if (! expect (0, typeid (A *))) return 1; if (! expect (1, typeid (A const *))) return 2; if (! expect (2, typeid (A volatile *))) return 3; if (! expect (4, typeid (A *__restrict__ *))) return 4; if (! expect (0, typeid (int A::*))) return 5; if (! expect (0, typeid (int A::**))) return 6; if (! expect (8 | 0, typeid (B *))) return 11; if (! expect (8 | 1, typeid (B const *))) return 12; if (! expect (8 | 2, typeid (B volatile *))) return 13; if (! expect (8 | 4, typeid (B *__restrict__ *))) return 14; if (! expect (16 | 0, typeid (int B::*))) return 15; if (! expect (8 | 0, typeid (int B::**))) return 16; if (! expect (8 | 0, typeid (B A::*))) return 17; if (! expect (24, typeid (B B::*))) return 18; return 0; } #else int main () { return 0; } #endif