blob: 455d3e4c0ef6ccde15d56666d2618e8ef5ee0411 (
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
29
30
31
32
33
34
35
36
37
38
39
40
|
// { dg-do compile }
// Mangling of classes from std::decimal are special-cased.
// Derived from g++.dg/abi/mangle13.C.
namespace std {
namespace decimal {
class decimal64 {
public:
typedef float __decfloat64 __attribute__ ((mode (DD)));
explicit decimal64 (float __r):__val (__r) {}
private:
__decfloat64 __val;
};
}
}
struct A {
template <typename T> std::decimal::decimal64 f ();
std::decimal::decimal64 operator+();
operator std::decimal::decimal64 ();
template <typename T>
std::decimal::decimal64 operator-();
};
typedef std::decimal::decimal64 (A::*P)();
template <P> struct S {};
template <typename T> void g (S<&T::template f<std::decimal::decimal64> >) {}
template <typename T> void g (S<&T::operator+ >) {}
template <typename T> void g (S<&T::operator std::decimal::decimal64>) {}
template <typename T> void g (S<&T::template operator- <std::decimal::decimal64> >) {}
template void g<A> (S<&A::f<std::decimal::decimal64> >);
template void g<A> (S<&A::operator+>);
template void g<A> (S<&A::operator std::decimal::decimal64>);
// { dg-final { scan-assembler "\n?_Z1gI1AEv1SIXadsrT_1fIDdEEE\[: \t\n\]" } }
// { dg-final { scan-assembler "\n?_Z1gI1AEv1SIXadsrT_plEE\[: \t\n\]" } }
|