summaryrefslogtreecommitdiff
path: root/gcc/cp/mangle.c
diff options
context:
space:
mode:
authorJason Merrill <jason@gcc.gnu.org>2000-12-04 12:00:04 -0500
committerJason Merrill <jason@gcc.gnu.org>2000-12-04 12:00:04 -0500
commitc00996a3ea28127b7392876352ad0dd32e00e1ca (patch)
tree7543491b113d205817aab1d11cfba53a22a40db7 /gcc/cp/mangle.c
parentd611079baa5b039340541d7f1576a3e520280b4f (diff)
downloadgcc-c00996a3ea28127b7392876352ad0dd32e00e1ca.tar.gz
mangle.c (write_type): Mangle VECTOR_TYPE with "U8__vector".
* mangle.c (write_type): Mangle VECTOR_TYPE with "U8__vector". (write_builtin_type): Pass intSI_type_node and the like through type_for_mode. * method.c (process_overload_item): Mangle VECTOR_TYPEs with 'o'. Pass intSI_type_node and the like through type_for_mode. * decl2.c (arg_assoc_type): Handle VECTOR_TYPE like COMPLEX_TYPE. * pt.c (tsubst, unify): Likewise. * tree.c (walk_tree): Likewise. * error.c (dump_type): Likewise. (dump_type_prefix, dump_type_suffix): Don't bother with VECTOR_TYPE. * Make-lang.in: Tweak top comment for emacs. (cp/TAGS): Restore. * except.c (expand_throw): Use push_throw_library_fn for _Jv_Throw. * pt.c (tsubst_decl): Call clone_function_decl here. (do_decl_instantiation): Not here. * class.c (clone_function_decl): Robustify. * decl.c (store_bindings): Only search in the non modified old_bindings for duplicates. From-SVN: r37999
Diffstat (limited to 'gcc/cp/mangle.c')
-rw-r--r--gcc/cp/mangle.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c
index 33eeefc447a..001a9e8f36f 100644
--- a/gcc/cp/mangle.c
+++ b/gcc/cp/mangle.c
@@ -1236,10 +1236,9 @@ write_local_name (function, local_entity, entity)
::= <CV-qualifier>
::= P <type> # pointer-to
::= R <type> # reference-to
- ::= C <type> # complex pair (C 2000) [not supported]
+ ::= C <type> # complex pair (C 2000)
::= G <type> # imaginary (C 2000) [not supported]
::= U <source-name> <type> # vendor extended type qualifier
- [not supported]
TYPE is a type node. */
@@ -1349,6 +1348,11 @@ write_type (type)
write_pointer_to_member_type (build_pointer_type (type));
break;
+ case VECTOR_TYPE:
+ write_string ("U8__vector");
+ write_type (TREE_TYPE (type));
+ break;
+
default:
my_friendly_abort (20000409);
}
@@ -1416,7 +1420,8 @@ write_CV_qualifiers_for_type (type)
::= f # float
::= d # double
::= e # long double, __float80
- ::= g # __float128 [not supported] */
+ ::= g # __float128 [not supported]
+ ::= u <source-name> # vendor extended type */
static void
write_builtin_type (type)
@@ -1446,6 +1451,7 @@ write_builtin_type (type)
size_t itk;
/* Assume TYPE is one of the shared integer type nodes. Find
it in the array of these nodes. */
+ iagain:
for (itk = 0; itk < itk_none; ++itk)
if (type == integer_types[itk])
{
@@ -1455,8 +1461,14 @@ write_builtin_type (type)
}
if (itk == itk_none)
- /* Couldn't find this type. */
- my_friendly_abort (20000408);
+ {
+ tree t = type_for_mode (TYPE_MODE (type), TREE_UNSIGNED (type));
+ if (type == t)
+ /* Couldn't find this type. */
+ my_friendly_abort (20000408);
+ type = t;
+ goto iagain;
+ }
}
break;