mangle.c (write_type): Don't use TYPE_MAIN_VARIANT when writing out an array type.
2002-04-24 Mark Mitchell <mark@codesourcery.com> * mangle.c (write_type): Don't use TYPE_MAIN_VARIANT when writing out an array type. (write_CV_qualifiers_for_type): Use TYPE_QUALS, not cp_type_quals, to determine qualifiers. From-SVN: r52748
This commit is contained in:
parent
1d80c072da
commit
09bef5885f
|
@ -1,5 +1,10 @@
|
|||
2002-04-24 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* mangle.c (write_type): Don't use TYPE_MAIN_VARIANT when writing
|
||||
out an array type.
|
||||
(write_CV_qualifiers_for_type): Use TYPE_QUALS, not cp_type_quals,
|
||||
to determine qualifiers.
|
||||
|
||||
* cvt.c (convert_to_void): Don't unconditionally make COND_EXPRs
|
||||
void.
|
||||
|
||||
|
|
|
@ -1353,6 +1353,11 @@ write_type (type)
|
|||
since both the qualified and uqualified types are substitution
|
||||
candidates. */
|
||||
write_type (TYPE_MAIN_VARIANT (type));
|
||||
else if (TREE_CODE (type) == ARRAY_TYPE)
|
||||
/* It is important not to use the TYPE_MAIN_VARIANT of TYPE here
|
||||
so that the cv-qualification of the element type is available
|
||||
in write_array_type. */
|
||||
write_array_type (type);
|
||||
else
|
||||
{
|
||||
/* See through any typedefs. */
|
||||
|
@ -1399,10 +1404,6 @@ write_type (type)
|
|||
write_nested_name (TYPE_STUB_DECL (type));
|
||||
break;
|
||||
|
||||
case ARRAY_TYPE:
|
||||
write_array_type (type);
|
||||
break;
|
||||
|
||||
case POINTER_TYPE:
|
||||
/* A pointer-to-member variable is represented by a POINTER_TYPE
|
||||
to an OFFSET_TYPE, so check for this first. */
|
||||
|
@ -1469,19 +1470,23 @@ write_CV_qualifiers_for_type (type)
|
|||
|
||||
"In cases where multiple order-insensitive qualifiers are
|
||||
present, they should be ordered 'K' (closest to the base type),
|
||||
'V', 'r', and 'U' (farthest from the base type) ..." */
|
||||
'V', 'r', and 'U' (farthest from the base type) ..."
|
||||
|
||||
if (CP_TYPE_RESTRICT_P (type))
|
||||
Note that we do not use cp_type_quals below; given "const
|
||||
int[3]", the "const" is emitted with the "int", not with the
|
||||
array. */
|
||||
|
||||
if (TYPE_QUALS (type) & TYPE_QUAL_RESTRICT)
|
||||
{
|
||||
write_char ('r');
|
||||
++num_qualifiers;
|
||||
}
|
||||
if (CP_TYPE_VOLATILE_P (type))
|
||||
if (TYPE_QUALS (type) & TYPE_QUAL_VOLATILE)
|
||||
{
|
||||
write_char ('V');
|
||||
++num_qualifiers;
|
||||
}
|
||||
if (CP_TYPE_CONST_P (type))
|
||||
if (TYPE_QUALS (type) & TYPE_QUAL_CONST)
|
||||
{
|
||||
write_char ('K');
|
||||
++num_qualifiers;
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2002-04-24 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* g++.dg/abi/mangle7.C: New test.
|
||||
|
||||
2002-04-24 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||
|
||||
* gcc.dg/cpp/ucs.c: Update as for 3.2.
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
/* { dg-do compile } */
|
||||
|
||||
typedef void *const t1[2];
|
||||
float const f1(t1 (&)[79], ...) {}
|
||||
|
||||
/* { dg-final { scan-assembler _Z2f1RA79_A2_KPvz } } */
|
Loading…
Reference in New Issue