diff options
Diffstat (limited to 'contrib/gcc/cp/error.c')
-rw-r--r-- | contrib/gcc/cp/error.c | 14 |
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); |