summaryrefslogtreecommitdiffstats
path: root/contrib/gcc/cp/error.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/gcc/cp/error.c')
-rw-r--r--contrib/gcc/cp/error.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/contrib/gcc/cp/error.c b/contrib/gcc/cp/error.c
index 594d4e4..aa075ee 100644
--- a/contrib/gcc/cp/error.c
+++ b/contrib/gcc/cp/error.c
@@ -382,7 +382,14 @@ dump_type (t, flags)
case VECTOR_TYPE:
output_add_string (scratch_buffer, "vector ");
- dump_type (TREE_TYPE (t), flags);
+ {
+ /* The subtype of a VECTOR_TYPE is something like intQI_type_node,
+ which has no name and is not very useful for diagnostics. So
+ look up the equivalent C type and print its name. */
+ tree elt = TREE_TYPE (t);
+ elt = type_for_mode (TYPE_MODE (elt), TREE_UNSIGNED (elt));
+ dump_type (elt, flags);
+ }
break;
case INTEGER_TYPE:
@@ -452,7 +459,8 @@ dump_type (t, flags)
break;
}
case TYPENAME_TYPE:
- output_add_string (scratch_buffer, "typename ");
+ if (IMPLICIT_TYPENAME_P (t))
+ output_add_string (scratch_buffer, "typename ");
dump_typename (t, flags);
break;
@@ -1727,7 +1735,7 @@ dump_expr (t, flags)
break;
case CONVERT_EXPR:
- if (VOID_TYPE_P (TREE_TYPE (t)))
+ if (TREE_TYPE (t) && VOID_TYPE_P (TREE_TYPE (t)))
{
print_left_paren (scratch_buffer);
dump_type (TREE_TYPE (t), flags);
OpenPOWER on IntegriCloud