aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/lto/pr69589_0.C
blob: bbdcb73dfc748c6969ef4e7eb663a1e4393ea3b0 (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
// { dg-lto-do link }
// { dg-lto-options "-O2 -rdynamic" } 
// { dg-extra-ld-options "-r -nostdlib" }
#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 ();
}