From: Jason Merrill Date: Mon, 9 Aug 1999 02:30:21 +0000 (+0000) Subject: ptree.c (print_lang_type): Print the real type of a PMF. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f3e4d63c924af4eab9bacf989db3d5187ca316ab;p=gcc.git ptree.c (print_lang_type): Print the real type of a PMF. * ptree.c (print_lang_type): Print the real type of a PMF. Print what exceptions a fn type throws. * typeck.c (common_type): Use same_type_p. And revert: * decl.c (bad_specifiers): It's OK to have an EH spec on a function pointer. From-SVN: r28609 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 0e0b5a57ea9..41037ae6899 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +1999-08-08 Jason Merrill + + * ptree.c (print_lang_type): Print the real type of a PMF. + Print what exceptions a fn type throws. + + * typeck.c (common_type): Use same_type_p. + 1999-08-07 Kaveh R. Ghazi * class.c (count_fields, add_fields_to_vec): Add static prototype. @@ -37,9 +44,6 @@ 1999-08-06 Jason Merrill - * decl.c (bad_specifiers): It's OK to have an EH spec on a function - pointer. - * pt.c (maybe_get_template_decl_from_type_decl): Make sure that we're looking at a class. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 83e408e9d96..27f915c65ce 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -8363,7 +8363,7 @@ bad_specifiers (object, type, virtualp, quals, inlinep, friendp, raises) object, type); if (friendp) cp_error_at ("`%D' declared as a friend", object); - if (raises && ! TYPE_PTRFN_P (TREE_TYPE (object))) + if (raises) cp_error_at ("`%D' declared with an exception specification", object); } diff --git a/gcc/cp/ptree.c b/gcc/cp/ptree.c index 3c8486425fd..0f7a7cba9b1 100644 --- a/gcc/cp/ptree.c +++ b/gcc/cp/ptree.c @@ -73,9 +73,10 @@ print_lang_type (file, node, indent) register tree node; int indent; { - if (TREE_CODE (node) == TEMPLATE_TYPE_PARM - || TREE_CODE (node) == TEMPLATE_TEMPLATE_PARM) + switch (TREE_CODE (node)) { + case TEMPLATE_TYPE_PARM: + case TEMPLATE_TEMPLATE_PARM: indent_to (file, indent + 3); fputs ("index ", file); fprintf (file, HOST_WIDE_INT_PRINT_DEC, TEMPLATE_TYPE_IDX (node)); @@ -84,8 +85,25 @@ print_lang_type (file, node, indent) fputs (" orig_level ", file); fprintf (file, HOST_WIDE_INT_PRINT_DEC, TEMPLATE_TYPE_ORIG_LEVEL (node)); return; + + case FUNCTION_TYPE: + case METHOD_TYPE: + if (TYPE_RAISES_EXCEPTIONS (node)) + print_node (file, "throws", TYPE_RAISES_EXCEPTIONS (node), indent + 4); + return; + + case RECORD_TYPE: + case UNION_TYPE: + break; + + default: + return; } + if (TYPE_PTRMEMFUNC_P (node)) + print_node (file, "ptrmemfunc fn type", TYPE_PTRMEMFUNC_FN_TYPE (node), + indent + 4); + if (! CLASS_TYPE_P (node)) return; diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 991234c5678..87245484eca 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -699,7 +699,7 @@ common_type (t1, t2) tt1 = TYPE_MAIN_VARIANT (tt1); tt2 = TYPE_MAIN_VARIANT (tt2); - if (tt1 == tt2) + if (same_type_p (tt1, tt2)) target = tt1; else if (b1) {