From: jason Date: Wed, 2 Jun 2010 19:19:31 +0000 (+0000) Subject: * error.c (dump_type): Improve typedef handling. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7199a4db5a77307767946a491630411553031389;p=thirdparty%2Fgcc.git * error.c (dump_type): Improve typedef handling. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@160184 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8b883e7656e7..09bbe6849c27 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,7 @@ 2010-06-02 Jason Merrill + * error.c (dump_type): Improve typedef handling. + PR c++/9726 PR c++/23594 PR c++/44333 diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 592f360001af..381163b2daf6 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -329,6 +329,25 @@ dump_type (tree t, int flags) if (t == NULL_TREE) return; + /* Don't print e.g. "struct mytypedef". */ + if (TYPE_P (t) && typedef_variant_p (t)) + { + tree decl = TYPE_NAME (t); + if ((flags & TFF_CHASE_TYPEDEF) + || DECL_SELF_REFERENCE_P (decl) + || (!flag_pretty_templates + && DECL_LANG_SPECIFIC (decl) && DECL_TEMPLATE_INFO (decl))) + t = strip_typedefs (t); + else if (same_type_p (t, TREE_TYPE (decl))) + t = decl; + else + { + pp_cxx_cv_qualifier_seq (cxx_pp, t); + pp_cxx_tree_identifier (cxx_pp, TYPE_IDENTIFIER (t)); + return; + } + } + if (TYPE_PTRMEMFUNC_P (t)) goto offset_type; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dba6f87bb4a1..00a6ad63f252 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,7 @@ 2010-06-02 Jason Merrill + * g++.dg/ext/vector9.C: Expect typedef in error message. + PR c++/9726 PR c++/23594 PR c++/44333 diff --git a/gcc/testsuite/g++.dg/ext/vector9.C b/gcc/testsuite/g++.dg/ext/vector9.C index 32e13b494f04..52b3f1714444 100644 --- a/gcc/testsuite/g++.dg/ext/vector9.C +++ b/gcc/testsuite/g++.dg/ext/vector9.C @@ -6,5 +6,5 @@ typedef int v4i __attribute__((vector_size(8))); void foo() { v4f v; - !(v4i)v; // { dg-error "__vector.2. int|argument" } + !(v4i)v; // { dg-error "v4i|argument" } }