aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2010-06-02 15:19:31 -0400
committerJason Merrill <jason@gcc.gnu.org>2010-06-02 15:19:31 -0400
commit3333a2ddebbb512fa251932e3e3fd8c0bc583d2b (patch)
treecd00790fcafabb6459c39eebdab4c5d052ff3258 /gcc/cp
parent1e00382978e2fa9b1575ea15f5068cfbb5f877dc (diff)
downloadgcc-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/ChangeLog2
-rw-r--r--gcc/cp/error.c19
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;