blob: d2dd88d42c8cf8bde37c1699a250c3a0ffb10940 [file] [log] [blame]
// { dg-do run }
// { dg-require-sharedlib "" }
// { dg-require-effective-target rtti }
// { dg-options "./testsuite_shared.so" }
#include <typeinfo>
#include <testsuite_hooks.h>
namespace __gnu_test
{
namespace
{
struct S { };
struct T { };
}
// Defined in testsuite_shared.so, referring to private type in that library
// with the same mangled name as __gnu_test::<anonymous>::S defined here.
extern const std::type_info& pr103240_private_S;
}
const std::type_info& private_S = __gnu_test::pr103240_private_S;
const std::type_info& local_S = typeid(__gnu_test::S);
const std::type_info& local_T = typeid(__gnu_test::T);
int main()
{
VERIFY( local_S == local_S );
VERIFY( ! local_S.before(local_S) );
VERIFY( local_S != local_T );
VERIFY( local_S.before(local_T) || local_T.before(local_S) );
VERIFY( local_S != private_S );
// PR libstdc++/103240
VERIFY( local_S.before(private_S) || private_S.before(local_S) );
}