diff options
author | Jason Merrill <jason@redhat.com> | 2010-06-02 15:19:31 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2010-06-02 15:19:31 -0400 |
commit | 3333a2ddebbb512fa251932e3e3fd8c0bc583d2b (patch) | |
tree | cd00790fcafabb6459c39eebdab4c5d052ff3258 /gcc/cp | |
parent | 1e00382978e2fa9b1575ea15f5068cfbb5f877dc (diff) | |
download | gcc-3333a2ddebbb512fa251932e3e3fd8c0bc583d2b.zip gcc-3333a2ddebbb512fa251932e3e3fd8c0bc583d2b.tar.gz gcc-3333a2ddebbb512fa251932e3e3fd8c0bc583d2b.tar.bz2 |
* error.c (dump_type): Improve typedef handling.
From-SVN: r160184
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/cp/error.c | 19 |
2 files changed, 21 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8b883e7..09bbe68 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,7 @@ 2010-06-02 Jason Merrill <jason@redhat.com> + * 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 592f360..381163b 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; |