summaryrefslogtreecommitdiff
path: root/gcc/cp/mangle.c
diff options
context:
space:
mode:
authornathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>2003-12-16 19:50:54 +0000
committernathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>2003-12-16 19:50:54 +0000
commit1cd6548d24fbcdffbdc3b852dbf9306d6d276893 (patch)
tree0fc4b9688b90a52b69a422edafa5f8c65e65968e /gcc/cp/mangle.c
parent6f8f5d6c80bf3c61779d6b6cfabc43c2d3b13cf1 (diff)
downloadgcc-1cd6548d24fbcdffbdc3b852dbf9306d6d276893.tar.gz
cp:
PR c++/9043 C++ ABI change: Mangling array indices in templates. * decl.c (compute_array_index_type): Reorganize for earlier template errors. Use value_dependent_expression_p for abi-2. * mangle.c (write_array_type): Check broken mangling for expression indices on abi-1 testsuite: PR c++/9043 * g++.dg/abi/mangle20-1.C: New test. * g++.dg/abi/mangle20-2.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@74707 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp/mangle.c')
-rw-r--r--gcc/cp/mangle.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c
index fe01120bc56..b34c309c827 100644
--- a/gcc/cp/mangle.c
+++ b/gcc/cp/mangle.c
@@ -2242,7 +2242,20 @@ write_array_type (const tree type)
write_unsigned_number (tree_low_cst (max, 1));
}
else
- write_expression (TREE_OPERAND (max, 0));
+ {
+ max = TREE_OPERAND (max, 0);
+ if (!abi_version_at_least (2))
+ {
+ /* value_dependent_expression_p presumes nothing is
+ dependent when PROCESSING_TEMPLATE_DECL is zero. */
+ ++processing_template_decl;
+ if (!value_dependent_expression_p (max))
+ G.need_abi_warning = 1;
+ --processing_template_decl;
+ }
+ write_expression (max);
+ }
+
}
write_char ('_');
write_type (TREE_TYPE (type));