Use new flag TYPE_STRING_FLAG instead of STRING_TYPE.
authorPer Bothner <bothner@gcc.gnu.org>
Wed, 16 Feb 1994 03:52:30 +0000 (19:52 -0800)
committerPer Bothner <bothner@gcc.gnu.org>
Wed, 16 Feb 1994 03:52:30 +0000 (19:52 -0800)
From-SVN: r6570

gcc/dbxout.c
gcc/dwarfout.c
gcc/expr.c

index 2517e6954c36b93fc061821b2efe4761184f4d7a..c3e611d17a5ab6813000264653b64b4184bc5552 100644 (file)
@@ -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;",
index 48cce48b89a05d7013f8e12a5ce0917277b25266..b3d3172567440a1447232e08001b49a484393a20 100644 (file)
@@ -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:
index ae1e5a46569498816a8bcca64112ff891044b91a..2348a857d951456229ca6ffd75cca3022d4fbefa 100644 (file)
@@ -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)