diff options
author | Jason Merrill <jason@redhat.com> | 2020-12-21 17:31:16 -0500 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2020-12-21 21:17:04 -0500 |
commit | 027935eec43173a89cd3eeace0b51967288ac075 (patch) | |
tree | 2cf6e5680077a8e4292809d8d4e39d66fbfa406b /gcc/cp/mangle.c | |
parent | 58fb912c15175f4444144b8a4ab52a4880b84994 (diff) | |
download | gcc-027935eec43173a89cd3eeace0b51967288ac075.zip gcc-027935eec43173a89cd3eeace0b51967288ac075.tar.gz gcc-027935eec43173a89cd3eeace0b51967288ac075.tar.bz2 |
c++: Add some asserts in mangle.c
The added asserts are places I noticed that we aren't adding the "on" to
distinguish an operator name from an expression involving the operator.
Hopefully that's because operator names never get there; if not, crash bug
reports will let us fix the issue.
gcc/cp/ChangeLog:
* mangle.c (write_member_name): Add assert.
(write_expression): Add asserts.
Diffstat (limited to 'gcc/cp/mangle.c')
-rw-r--r-- | gcc/cp/mangle.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c index c1d9c73..7c32e22 100644 --- a/gcc/cp/mangle.c +++ b/gcc/cp/mangle.c @@ -2877,7 +2877,10 @@ write_member_name (tree member) write_unqualified_id (member); } else if (DECL_P (member)) - write_unqualified_name (member); + { + gcc_assert (!DECL_OVERLOADED_OPERATOR_P (member)); + write_unqualified_name (member); + } else if (TREE_CODE (member) == TEMPLATE_ID_EXPR) { tree name = TREE_OPERAND (member, 0); @@ -3162,6 +3165,7 @@ write_expression (tree expr) write_expression (member); else { + gcc_assert (code != BASELINK || BASELINK_QUALIFIED_P (expr)); write_string ("sr"); write_type (scope); write_member_name (member); @@ -3344,7 +3348,9 @@ write_expression (tree expr) } else if (dependent_name (expr)) { - write_unqualified_id (dependent_name (expr)); + tree name = dependent_name (expr); + gcc_assert (!IDENTIFIER_ANY_OP_P (name)); + write_unqualified_id (name); } else { |