From a7ddca92d62bca781fd6825829f76e12b0b66096 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Mon, 22 Apr 2013 14:49:01 -0400 Subject: [PATCH] * mangle.c (write_type): Mangle decltype(auto). From-SVN: r198150 --- gcc/cp/ChangeLog | 4 ++++ gcc/cp/mangle.c | 5 ++++- gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C | 12 ++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 7e224ae2e0e..b4680c276eb 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2013-04-22 Jason Merrill + + * mangle.c (write_type): Mangle decltype(auto). + 2013-04-19 Jason Merrill N3638 changes to return type deduction diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c index 83c3e628da0..8da62b5e969 100644 --- a/gcc/cp/mangle.c +++ b/gcc/cp/mangle.c @@ -2019,7 +2019,10 @@ write_type (tree type) case TEMPLATE_TYPE_PARM: if (is_auto (type)) { - write_identifier ("Da"); + if (AUTO_IS_DECLTYPE (type)) + write_identifier ("Dc"); + else + write_identifier ("Da"); ++is_builtin_type; break; } diff --git a/gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C b/gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C new file mode 100644 index 00000000000..834cfc3ed86 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/auto-mangle1.C @@ -0,0 +1,12 @@ +// Mangling for decltype(auto) +// { dg-options "-std=c++1y" } + +void f(); + +// { dg-final { scan-assembler "_Z2g1IiEDcv" } } +template decltype(auto) g1() { return &f; } +template decltype(auto) g1(); + +// { dg-final { scan-assembler "_Z2g2IiEDav" } } +template auto g2() { return &f; } +template auto g2(); -- 2.30.2