summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/abi/mangle13.C
blob: 716c4c36f410901dc2620ea5a317f84feca18fe2 (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-options "-fabi-version=0" }

struct A {
  template <typename T> int f ();
  int operator+();
  operator int ();
  template <typename T> 
  int operator-();
};

typedef int (A::*P)();

template <P> struct S {};

template <typename T> void g (S<&T::template f<int> >) {}
template <typename T> void g (S<&T::operator+ >) {}
template <typename T> void g (S<&T::operator int>) {}
template <typename T> void g (S<&T::template operator- <double> >) {}

template void g<A> (S<&A::f<int> >);
template void g<A> (S<&A::operator+>);
template void g<A> (S<&A::operator int>);
template void g<A> (S<&A::operator-<double> >);

// { dg-final { scan-assembler _Z1gI1AEv1SIXadsrT_1fIiEEE } }
// { dg-final { scan-assembler _Z1gI1AEv1SIXadsrT_plEE } }
// { dg-final { scan-assembler _Z1gI1AEv1SIXadsrT_cviEE } }
// { dg-final { scan-assembler _Z1gI1AEv1SIXadsrT_miIdEEE } }