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:
Mark Mitchell 2002-04-25 01:04:56 +00:00 committed by Mark Mitchell
parent 1d80c072da
commit 09bef5885f
4 changed files with 28 additions and 8 deletions

View File

@ -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.

View File

@ -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;

View File

@ -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.

View File

@ -0,0 +1,6 @@
/* { dg-do compile } */
typedef void *const t1[2];
float const f1(t1 (&)[79], ...) {}
/* { dg-final { scan-assembler _Z2f1RA79_A2_KPvz } } */