aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/mangle.c
diff options
context:
space:
mode:
authorGiovanni Bajo <giovannibajo@gcc.gnu.org>2004-11-04 13:07:35 +0000
committerGiovanni Bajo <giovannibajo@gcc.gnu.org>2004-11-04 13:07:35 +0000
commitb6ab6892cc9faed44e07be5e7e9d389c35f4dbb6 (patch)
tree83598a1d6f066b2be9579ffd9e08efb5b5b8c2fa /gcc/cp/mangle.c
parenteba7452ba8a7c3d088531c0a9dca639b6d708883 (diff)
downloadgcc-b6ab6892cc9faed44e07be5e7e9d389c35f4dbb6.zip
gcc-b6ab6892cc9faed44e07be5e7e9d389c35f4dbb6.tar.gz
gcc-b6ab6892cc9faed44e07be5e7e9d389c35f4dbb6.tar.bz2
DR 49, 100
DR 49, 100 * cp-tree.h (TYPE_REF_OBJ_P): New macro. (TYPE_PTR_P, TYPE_PTROB_P, TYPE_PTROBV_P, TYPE_PTRFN_P, TYPE_REFFN_P): Document. (fold_decl_constant_value): New prototype. * pt.c (convert_nontype_argument_function): Rewrite and extract parts into... (fold_decl_constant_value, convert_nontype_argument_function): New. (lookup_template_class): Add comment about useless double call. * mangle.c (write_expression): Strip conversions before lowering pointer to members. * cvt.c (ocp_convert): Check LOOKUP_COMPLAIN for a pedwarn. Disallow enum to enum conversion. * g++.dg/template/nontype7.C: New test. * g++.dg/template/nontype8.C: Likewise. * g++.dg/template/nontype9.C: Likewise. * g++.dg/template/nontype10.C: Likewise. * g++.dg/tc1/dr49.C: Likewise. * g++.dg/template/ptrmem8.C: Relax dg-error checks. * g++.old-deja/g++.other/null1.C: Remove a buggy error check From-SVN: r90059
Diffstat (limited to 'gcc/cp/mangle.c')
-rw-r--r--gcc/cp/mangle.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c
index 5d9995fa..1aeb3be 100644
--- a/gcc/cp/mangle.c
+++ b/gcc/cp/mangle.c
@@ -1969,6 +1969,16 @@ write_expression (tree expr)
code = TREE_CODE (expr);
+ /* Skip NOP_EXPRs. They can occur when (say) a pointer argument
+ is converted (via qualification conversions) to another
+ type. */
+ while (TREE_CODE (expr) == NOP_EXPR
+ || TREE_CODE (expr) == NON_LVALUE_EXPR)
+ {
+ expr = TREE_OPERAND (expr, 0);
+ code = TREE_CODE (expr);
+ }
+
/* Handle pointers-to-members by making them look like expression
nodes. */
if (code == PTRMEM_CST)
@@ -1980,16 +1990,6 @@ write_expression (tree expr)
code = TREE_CODE (expr);
}
- /* Skip NOP_EXPRs. They can occur when (say) a pointer argument
- is converted (via qualification conversions) to another
- type. */
- while (TREE_CODE (expr) == NOP_EXPR
- || TREE_CODE (expr) == NON_LVALUE_EXPR)
- {
- expr = TREE_OPERAND (expr, 0);
- code = TREE_CODE (expr);
- }
-
/* Handle template parameters. */
if (code == TEMPLATE_TYPE_PARM
|| code == TEMPLATE_TEMPLATE_PARM