Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/dfp/mangle-1.C @ 138:fc828634a951
merge
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 08 Nov 2018 14:17:14 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// { dg-do compile } // { dg-options "-fabi-version=10" } // 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\]" } }