(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 type;
|
||||||
{
|
{
|
||||||
tree tem;
|
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))
|
for (tem = TYPE_FIELDS (type); tem; tem = TREE_CHAIN (tem))
|
||||||
{
|
{
|
||||||
/* Output the name, type, position (in bits), size (in bits)
|
/* For nameless subunions and subrecords, treat their fields as ours. */
|
||||||
of each field. */
|
|
||||||
if (DECL_NAME (tem) == NULL_TREE
|
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));
|
dbxout_type_fields (TREE_TYPE (tem));
|
||||||
/* Omit here local type decls until we know how to support them. */
|
/* Omit here local type decls until we know how to support them. */
|
||||||
else if (TREE_CODE (tem) == TYPE_DECL)
|
else if (TREE_CODE (tem) == TYPE_DECL)
|
||||||
@ -989,6 +991,44 @@ dbxout_type (type, full, show_arg_types)
|
|||||||
CHARS (16);
|
CHARS (16);
|
||||||
break;
|
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:
|
case ARRAY_TYPE:
|
||||||
/* Output "a" followed by a range type definition
|
/* Output "a" followed by a range type definition
|
||||||
for the index type of the array
|
for the index type of the array
|
||||||
|
Loading…
Reference in New Issue
Block a user