summaryrefslogtreecommitdiff
path: root/gcc/cp/cvt.c
diff options
context:
space:
mode:
authorgiovannibajo <giovannibajo@138bc75d-0d04-0410-961f-82ee72b054a4>2004-11-04 13:07:35 +0000
committergiovannibajo <giovannibajo@138bc75d-0d04-0410-961f-82ee72b054a4>2004-11-04 13:07:35 +0000
commitb312a686cbdfd56ccff48a9fa015ceec171008c3 (patch)
tree83598a1d6f066b2be9579ffd9e08efb5b5b8c2fa /gcc/cp/cvt.c
parented48bcbb3d134bc4025bb091fbf6f28522aca32e (diff)
downloadgcc-b312a686cbdfd56ccff48a9fa015ceec171008c3.tar.gz
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 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@90059 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp/cvt.c')
-rw-r--r--gcc/cp/cvt.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c
index 3e84ed0ad89..f1968fd3a90 100644
--- a/gcc/cp/cvt.c
+++ b/gcc/cp/cvt.c
@@ -662,10 +662,13 @@ ocp_convert (tree type, tree expr, int convtype, int flags)
/* enum = enum, enum = int, enum = float, (enum)pointer are all
errors. */
if (TREE_CODE (type) == ENUMERAL_TYPE
- && ((ARITHMETIC_TYPE_P (intype) && ! (convtype & CONV_STATIC))
- || (TREE_CODE (intype) == POINTER_TYPE)))
+ && (((INTEGRAL_OR_ENUMERATION_TYPE_P (intype)
+ || TREE_CODE (intype) == REAL_TYPE)
+ && ! (convtype & CONV_STATIC))
+ || TREE_CODE (intype) == POINTER_TYPE))
{
- pedwarn ("conversion from %q#T to %q#T", intype, type);
+ if (flags & LOOKUP_COMPLAIN)
+ pedwarn ("conversion from %q#T to %q#T", intype, type);
if (flag_pedantic_errors)
return error_mark_node;