aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2012-07-18 15:51:36 -0400
committerJason Merrill <jason@gcc.gnu.org>2012-07-18 15:51:36 -0400
commitaefa74bd2bda63d1420265ba1a5261adeb4c305d (patch)
tree17ba6cc4288373c5855e2cb266f3100cba141ceb /gcc
parent1ff8c79bc5a0da6b628356ed983f1838397f7948 (diff)
downloadgcc-aefa74bd2bda63d1420265ba1a5261adeb4c305d.zip
gcc-aefa74bd2bda63d1420265ba1a5261adeb4c305d.tar.gz
gcc-aefa74bd2bda63d1420265ba1a5261adeb4c305d.tar.bz2
cp-demangle.c (cplus_demangle_operators): Add *_cast.
* cp-demangle.c (cplus_demangle_operators): Add *_cast. (op_is_new_cast): New. (d_expression, d_print_comp): Check it. From-SVN: r189630
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle3-2.C20
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle3.C1
-rw-r--r--gcc/testsuite/g++.dg/debug/nullptr01.C4
3 files changed, 23 insertions, 2 deletions
diff --git a/gcc/testsuite/g++.dg/abi/mangle3-2.C b/gcc/testsuite/g++.dg/abi/mangle3-2.C
new file mode 100644
index 0000000..ac85fb0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/mangle3-2.C
@@ -0,0 +1,20 @@
+// Test mangling of type casts
+// { dg-options "-fabi-version=0" }
+// { dg-do compile }
+
+template<int i> class A {};
+template<bool b> class B {};
+
+template<int i> void f(A<i> &, B<bool(i)> &) {}
+template<int i> void g(A<i> &, B<static_cast<bool>(i)> &) {}
+
+int main()
+{
+ A<1> a;
+ B<true> b;
+ f(a, b);
+ g(a, b);
+}
+
+// { dg-final { scan-assembler "\n_?_Z1fILi1EEvR1AIXT_EER1BIXcvbT_EE\[: \t\n\]" } }
+// { dg-final { scan-assembler "\n_?_Z1gILi1EEvR1AIXT_EER1BIXscbT_EE\[: \t\n\]" } }
diff --git a/gcc/testsuite/g++.dg/abi/mangle3.C b/gcc/testsuite/g++.dg/abi/mangle3.C
index a20b877..5f44f76 100644
--- a/gcc/testsuite/g++.dg/abi/mangle3.C
+++ b/gcc/testsuite/g++.dg/abi/mangle3.C
@@ -1,4 +1,5 @@
// Test mangling of type casts
+// { dg-options "-fabi-version=2" }
// { dg-do compile }
template<int i> class A {};
diff --git a/gcc/testsuite/g++.dg/debug/nullptr01.C b/gcc/testsuite/g++.dg/debug/nullptr01.C
index ab08588..63c16ac 100644
--- a/gcc/testsuite/g++.dg/debug/nullptr01.C
+++ b/gcc/testsuite/g++.dg/debug/nullptr01.C
@@ -1,5 +1,5 @@
// Test that debugging backends don't crash on NULLPTR_TYPE.
-// { dg-options "-std=c++0x" }
+// { dg-options "-std=c++0x -fabi-version=0" }
typedef decltype(nullptr) nullptr_t;
@@ -12,4 +12,4 @@ template <> nullptr_t g(A<nullptr_t>)
nullptr_t local;
}
// { dg-final { scan-assembler "_Z1fDn" } }
-// { dg-final { scan-assembler "_Z1gI1AIDnEES1_T_" } }
+// { dg-final { scan-assembler "_Z1gI1AIDnEEDnT_" } }