diff options
author | nathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-12-16 19:50:54 +0000 |
---|---|---|
committer | nathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-12-16 19:50:54 +0000 |
commit | 1cd6548d24fbcdffbdc3b852dbf9306d6d276893 (patch) | |
tree | 0fc4b9688b90a52b69a422edafa5f8c65e65968e /gcc/cp/mangle.c | |
parent | 6f8f5d6c80bf3c61779d6b6cfabc43c2d3b13cf1 (diff) | |
download | gcc-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.c | 15 |
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)); |