From 4042d44040b437576f9cc4afb61307c0541ffb69 Mon Sep 17 00:00:00 2001 From: Per Bothner Date: Tue, 15 Feb 1994 19:52:30 -0800 Subject: [PATCH] Use new flag TYPE_STRING_FLAG instead of STRING_TYPE. From-SVN: r6570 --- gcc/dbxout.c | 17 +++++++++++++++++ gcc/dwarfout.c | 30 +++++++++++++++--------------- gcc/expr.c | 9 ++++++--- 3 files changed, 38 insertions(+), 18 deletions(-) diff --git a/gcc/dbxout.c b/gcc/dbxout.c index 2517e69..c3e611d 100644 --- a/gcc/dbxout.c +++ b/gcc/dbxout.c @@ -1100,6 +1100,16 @@ dbxout_type (type, full, show_arg_types) 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); @@ -1110,6 +1120,13 @@ dbxout_type (type, full, show_arg_types) 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;", diff --git a/gcc/dwarfout.c b/gcc/dwarfout.c index 48cce48..b3d3172 100644 --- a/gcc/dwarfout.c +++ b/gcc/dwarfout.c @@ -1409,7 +1409,6 @@ type_is_fundamental (type) case METHOD_TYPE: case POINTER_TYPE: case REFERENCE_TYPE: - case STRING_TYPE: case FILE_TYPE: case OFFSET_TYPE: case LANG_TYPE: @@ -4003,11 +4002,6 @@ output_type (type, containing_scope) 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); @@ -4024,17 +4018,23 @@ output_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: diff --git a/gcc/expr.c b/gcc/expr.c index ae1e5a4..2348a85 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -7004,9 +7004,12 @@ expand_builtin (exp, target, subtarget, mode, ignore) 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) -- 2.7.4