summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/lto/pr69589_0.C
blob: 599d5d44960cd21c55746f4c5c7837539ac8b168 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// { dg-lto-do link }
// { dg-lto-options "-O2 -rdynamic" }
// { dg-extra-ld-options "-r -nostdlib" }
// { dg-require-effective-target rdynamic }

#pragma GCC visibility push(hidden)
struct A { int &operator[] (long); };
template <typename> struct B;
template <typename T, typename = B<T> >
using Z = int;
template <typename> struct C;
struct S {
  int e;
  virtual ~S () {}
};
struct D : S {
  A a;
  long i;
  D() { { e ? &a[i] : nullptr; } }
};
template <>
struct C<int> { Z<S> m8 () const; };
Z<S>
C<int>::m8 () const
{
  D ();
}