diff options
author | Giovanni Bajo <giovannibajo@gcc.gnu.org> | 2004-11-04 13:07:35 +0000 |
---|---|---|
committer | Giovanni Bajo <giovannibajo@gcc.gnu.org> | 2004-11-04 13:07:35 +0000 |
commit | b6ab6892cc9faed44e07be5e7e9d389c35f4dbb6 (patch) | |
tree | 83598a1d6f066b2be9579ffd9e08efb5b5b8c2fa /gcc/cp/mangle.c | |
parent | eba7452ba8a7c3d088531c0a9dca639b6d708883 (diff) | |
download | gcc-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.c | 20 |
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 |