(dbxout_type_fields): Handle nameless subrecords for Pascal.
(dbxout_type): Handle CHAR_TYPE, BOOLEAN_TYPE. FILE_TYPE, SET_TYPE. From-SVN: r2079
This commit is contained in:
parent
1b6374aa53
commit
15a5b8a22a
46
gcc/dbxout.c
46
gcc/dbxout.c
@ -561,12 +561,14 @@ dbxout_type_fields (type)
|
||||
tree type;
|
||||
{
|
||||
tree tem;
|
||||
/* Output the name, type, position (in bits), size (in bits) of each
|
||||
field. */
|
||||
for (tem = TYPE_FIELDS (type); tem; tem = TREE_CHAIN (tem))
|
||||
{
|
||||
/* Output the name, type, position (in bits), size (in bits)
|
||||
of each field. */
|
||||
/* For nameless subunions and subrecords, treat their fields as ours. */
|
||||
if (DECL_NAME (tem) == NULL_TREE
|
||||
&& TREE_CODE (TREE_TYPE (tem)) == UNION_TYPE)
|
||||
&& (TREE_CODE (TREE_TYPE (tem)) == UNION_TYPE
|
||||
|| TREE_CODE (TREE_TYPE (tem)) == RECORD_TYPE))
|
||||
dbxout_type_fields (TREE_TYPE (tem));
|
||||
/* Omit here local type decls until we know how to support them. */
|
||||
else if (TREE_CODE (tem) == TYPE_DECL)
|
||||
@ -989,6 +991,44 @@ dbxout_type (type, full, show_arg_types)
|
||||
CHARS (16);
|
||||
break;
|
||||
|
||||
case CHAR_TYPE:
|
||||
/* Output the type `char' as a subrange of itself.
|
||||
That is what pcc seems to do. */
|
||||
fprintf (asmfile, "r%d;0;%d;", TYPE_SYMTAB_ADDRESS (char_type_node),
|
||||
TREE_UNSIGNED (type) ? 255 : 127);
|
||||
CHARS (9);
|
||||
break;
|
||||
|
||||
case BOOLEAN_TYPE: /* Define as enumeral type (False, True) */
|
||||
fprintf (asmfile, "eFalse:0,True:1,;");
|
||||
CHARS (17);
|
||||
break;
|
||||
|
||||
case FILE_TYPE:
|
||||
putc ('d', asmfile);
|
||||
CHARS (1);
|
||||
dbxout_type (TREE_TYPE (type), 0);
|
||||
break;
|
||||
|
||||
case COMPLEX_TYPE:
|
||||
/* Differs from the REAL_TYPE by its new data type number */
|
||||
|
||||
if (TREE_CODE (TREE_TYPE (type)) == REAL_TYPE)
|
||||
{
|
||||
fprintf (asmfile, "r%d;%d;0;",
|
||||
TYPE_SYMTAB_ADDRESS (type),
|
||||
TREE_INT_CST_LOW (size_in_bytes (TREE_TYPE (type))));
|
||||
CHARS (15); /* The number is propably incorrect here */
|
||||
} else
|
||||
abort (); /* What to do with CSImode complex? */
|
||||
break;
|
||||
|
||||
case SET_TYPE:
|
||||
putc ('S', asmfile);
|
||||
CHARS (1);
|
||||
dbxout_type (TREE_TYPE (type), 0);
|
||||
break;
|
||||
|
||||
case ARRAY_TYPE:
|
||||
/* Output "a" followed by a range type definition
|
||||
for the index type of the array
|
||||
|
Loading…
Reference in New Issue
Block a user