break;
case SET_TYPE:
+ if (use_gnu_debug_info_extensions)
+ {
+ have_used_extensions = 1;
+ fprintf (asmfile, "@s%d;",
+ BITS_PER_UNIT * int_size_in_bytes (type));
+ /* Check if a bitstring type, which in Chill is
+ different from a [power]set. */
+ if (TYPE_STRING_FLAG (type))
+ fprintf (asmfile, "@S;");
+ }
putc ('S', asmfile);
CHARS (1);
dbxout_type (TYPE_DOMAIN (type), 0, 0);
for the index type of the array
followed by a reference to the target-type.
ar1;0;N;M for a C array of type M and size N+1. */
+ /* Check if a character string type, which in Chill is
+ different from an array of characters. */
+ if (TYPE_STRING_FLAG (type) && use_gnu_debug_info_extensions)
+ {
+ have_used_extensions = 1;
+ fprintf (asmfile, "@S;");
+ }
tem = TYPE_DOMAIN (type);
if (tem == NULL)
fprintf (asmfile, "ar%d;0;-1;",
case METHOD_TYPE:
case POINTER_TYPE:
case REFERENCE_TYPE:
- case STRING_TYPE:
case FILE_TYPE:
case OFFSET_TYPE:
case LANG_TYPE:
abort (); /* No way to represent these in Dwarf yet! */
break;
- case STRING_TYPE:
- output_type (TREE_TYPE (type), containing_scope);
- output_die (output_string_type_die, type);
- break;
-
case FUNCTION_TYPE:
/* Force out return type (in case it wasn't forced out already). */
output_type (TREE_TYPE (type), containing_scope);
end_sibling_chain ();
break;
- case ARRAY_TYPE:
- {
- register tree element_type;
+ case ARRAY_TYPE:
+ if (TYPE_STRING_FLAG (type) && TREE_CODE(TREE_TYPE(type)) == CHAR_TYPE)
+ {
+ output_type (TREE_TYPE (type), containing_scope);
+ output_die (output_string_type_die, type);
+ }
+ else
+ {
+ register tree element_type;
- element_type = TREE_TYPE (type);
- while (TREE_CODE (element_type) == ARRAY_TYPE)
- element_type = TREE_TYPE (element_type);
+ element_type = TREE_TYPE (type);
+ while (TREE_CODE (element_type) == ARRAY_TYPE)
+ element_type = TREE_TYPE (element_type);
- output_type (element_type, containing_scope);
- output_die (output_array_type_die, type);
- }
+ output_type (element_type, containing_scope);
+ output_die (output_array_type_die, type);
+ }
break;
case ENUMERAL_TYPE:
if (code == UNION_TYPE || code == QUAL_UNION_TYPE)
return GEN_INT (union_type_class);
if (code == ARRAY_TYPE)
- return GEN_INT (array_type_class);
- if (code == STRING_TYPE)
- return GEN_INT (string_type_class);
+ {
+ if (TYPE_STRING_FLAG (type))
+ return GEN_INT (string_type_class);
+ else
+ return GEN_INT (array_type_class);
+ }
if (code == SET_TYPE)
return GEN_INT (set_type_class);
if (code == FILE_TYPE)