diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/abi/mangle37.C')
-rw-r--r-- | gcc/testsuite/g++.dg/abi/mangle37.C | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/abi/mangle37.C b/gcc/testsuite/g++.dg/abi/mangle37.C new file mode 100644 index 000000000..7270861ac --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/mangle37.C @@ -0,0 +1,35 @@ +// Testcase for mangling of expressions involving operator names. +// { dg-options -std=c++0x } +// { dg-final { scan-assembler "_Z1fI1AEDTclonplfp_fp_EET_" } } +// { dg-final { scan-assembler "_Z1gI1AEDTclonplIT_Efp_fp_EES1_" } } +// { dg-final { scan-assembler "_Z1hI1AEDTcldtfp_miEET_" } } +// { dg-final { scan-assembler "_Z1iI1AEDTcldtfp_srT_miEES1_" } } +// { dg-final { scan-assembler "_Z1jI1AEDTcldtfp_cvPT_EES1_" } } + +struct A { + void operator-(); + template <class T> + operator T(); +}; +template <class T> +T operator+(T,T); + +template <class T> +auto f (T t) -> decltype(operator+(t,t)); +template <class T> +auto g (T t) -> decltype(operator+<T>(t,t)); +template <class T> +auto h (T t) -> decltype(t.operator-()); +template <class T> +auto i (T t) -> decltype(t.T::operator-()); +template <class T> +auto j (T t) -> decltype(t.operator T*()); + +int main() +{ + f(A()); + g(A()); + h(A()); + i(A()); + j(A()); +} |