This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Clean up use of CHARS in dbxout.c


This patch makes the use of the CHARS macro much more precisely correspond to
the number of characters actually written.  It also does some other, more
minor, cleanups that I noticed while doing the above cleanup.

Tested with bootstrap on aphaev56 --with-stabs.

Wed Jul 25 18:00:05 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* dbxout.c: Consistently use putc instead of fputc.
 	(print_wide_int): New function; call instead of direct fprintf.
	(dbxout_type_index): Adjust calls of CHARS to be more accurate.
	(dbxout_type_fields, dbxout_type_method_1): Likewise.
	(dbxout_type_methods, dbxout_range_type, dbxout_type): Likewise.
	(print_int_cst_octal): Likewise.
	(print_octal): Show we wrote characters.
	(dbxout_type): Set have_used_extensions in more places.

*** dbxout.c	2001/07/22 17:02:53	1.97
--- dbxout.c	2001/07/25 21:45:51
*************** static void dbxout_type			PARAMS ((tree,
*** 307,310 ****
--- 307,311 ----
  static void print_int_cst_octal		PARAMS ((tree));
  static void print_octal			PARAMS ((unsigned HOST_WIDE_INT, int));
+ static void print_wide_int		PARAMS ((HOST_WIDE_INT));
  static void dbxout_type_name		PARAMS ((tree));
  static int dbxout_symbol_location	PARAMS ((tree, tree, const char *, rtx));
*************** dbxout_function_end ()
*** 395,399 ****
    fprintf (asmfile, "%s\"\",%d,0,0,", ASM_STABS_OP, N_FUN);
    assemble_name (asmfile, lscope_label_name);
!   fputc ('-', asmfile);
    assemble_name (asmfile, XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0));
    fprintf (asmfile, "\n");
--- 396,400 ----
    fprintf (asmfile, "%s\"\",%d,0,0,", ASM_STABS_OP, N_FUN);
    assemble_name (asmfile, lscope_label_name);
!   putc ('-', asmfile);
    assemble_name (asmfile, XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0));
    fprintf (asmfile, "\n");
*************** dbxout_type_index (type)
*** 691,695 ****
    struct typeinfo *t = &typevec[TYPE_SYMTAB_ADDRESS (type)];
    fprintf (asmfile, "(%d,%d)", t->file_number, t->type_number);
!   CHARS (7);
  #endif
  }
--- 692,696 ----
    struct typeinfo *t = &typevec[TYPE_SYMTAB_ADDRESS (type)];
    fprintf (asmfile, "(%d,%d)", t->file_number, t->type_number);
!   CHARS (9);
  #endif
  }
*************** dbxout_type_fields (type)
*** 757,761 ****
  	    {
  	      fprintf (asmfile, ":");
! 	      CHARS (2);
  	    }
  
--- 758,762 ----
  	    {
  	      fprintf (asmfile, ":");
! 	      CHARS (1);
  	    }
  
*************** dbxout_type_fields (type)
*** 780,803 ****
  	      if (TREE_STATIC (tem) && use_gnu_debug_info_extensions)
  		{
! 		  const char *name =
! 		    IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (tem));
  		  have_used_extensions = 1;
! 		  fprintf (asmfile, ":%s;", name);
! 		  CHARS (strlen (name));
  		}
  	      else
! 		/* If TEM is non-static, GDB won't understand it.  */
! 		fprintf (asmfile, ",0,0;");
  	    }
  	  else
  	    {
! 	      fputc (',', asmfile);
! 	      fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! 		       int_bit_position (tem));
! 	      fputc (',', asmfile);
! 	      fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! 		       tree_low_cst (DECL_SIZE (tem), 1));
! 	      fputc (';', asmfile);
! 	      CHARS (23);
  	    }
  	}
--- 781,805 ----
  	      if (TREE_STATIC (tem) && use_gnu_debug_info_extensions)
  		{
! 		  tree name = DECL_ASSEMBLER_NAME (tem);
! 
  		  have_used_extensions = 1;
! 		  fprintf (asmfile, ":%s;", IDENTIFIER_POINTER (name));
! 		  CHARS (IDENTIFIER_LENGTH (name) + 2);
  		}
  	      else
! 		{
! 		  /* If TEM is non-static, GDB won't understand it.  */
! 		  fprintf (asmfile, ",0,0;");
! 		  CHARS (5);
! 		}
  	    }
  	  else
  	    {
! 	      putc (',', asmfile);
! 	      print_wide_int (int_bit_position (tem));
! 	      putc (',', asmfile);
! 	      print_wide_int (tree_low_cst (DECL_SIZE (tem), 1));
! 	      putc (';', asmfile);
! 	      CHARS (3);
  	    }
  	}
*************** dbxout_type_method_1 (decl, debug_name)
*** 845,854 ****
    if (DECL_VINDEX (decl) && host_integerp (DECL_VINDEX (decl), 0))
      {
!       fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! 	       tree_low_cst (DECL_VINDEX (decl), 0));
!       fputc (';', asmfile);
        dbxout_type (DECL_CONTEXT (decl), 0);
        fprintf (asmfile, ";");
!       CHARS (8);
      }
  }
--- 847,856 ----
    if (DECL_VINDEX (decl) && host_integerp (DECL_VINDEX (decl), 0))
      {
!       print_wide_int (tree_low_cst (DECL_VINDEX (decl), 0));
!       putc (';', asmfile);
!       CHARS (1);
        dbxout_type (DECL_CONTEXT (decl), 0);
        fprintf (asmfile, ";");
!       CHARS (1);
      }
  }
*************** dbxout_type_methods (type)
*** 926,931 ****
  	    continue;
  
! 	  debug_name =
! 	    IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (fndecl));
  
  	  CONTIN;
--- 928,932 ----
  	    continue;
  
! 	  debug_name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (fndecl));
  
  	  CONTIN;
*************** dbxout_range_type (type)
*** 996,1016 ****
        && host_integerp (TYPE_MIN_VALUE (type), 0))
      {
!       fputc (';', asmfile);
!       fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! 	       tree_low_cst (TYPE_MIN_VALUE (type), 0));
      }
    else
!     fprintf (asmfile, ";0");
  
    if (TYPE_MAX_VALUE (type) != 0
        && host_integerp (TYPE_MAX_VALUE (type), 0))
      {
!       fputc (';', asmfile);
!       fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! 	       tree_low_cst (TYPE_MAX_VALUE (type), 0));
!       fputc (';', asmfile);
      }
    else
!     fprintf (asmfile, ";-1;");
  }
  
--- 997,1024 ----
        && host_integerp (TYPE_MIN_VALUE (type), 0))
      {
!       putc (';', asmfile);
!       CHARS (1);
!       print_wide_int (tree_low_cst (TYPE_MIN_VALUE (type), 0));
      }
    else
!     {
!       fprintf (asmfile, ";0");
!       CHARS (2);
!     }
  
    if (TYPE_MAX_VALUE (type) != 0
        && host_integerp (TYPE_MAX_VALUE (type), 0))
      {
!       putc (';', asmfile);
!       CHARS (1);
!       print_wide_int (tree_low_cst (TYPE_MAX_VALUE (type), 0));
!       putc (';', asmfile);
!       CHARS (1);
      }
    else
!     {
!       fprintf (asmfile, ";-1;");
!       CHARS (4);
!     }
  }
  
*************** dbxout_type (type, full)
*** 1178,1183 ****
--- 1186,1193 ----
  	     take care to make sure that `char' was type number 2.  */
  	  fprintf (asmfile, "r");
+ 	  CHARS (1);
  	  dbxout_type_index (type);
  	  fprintf (asmfile, ";0;127;");
+ 	  CHARS (7);
  	}
  
*************** dbxout_type (type, full)
*** 1195,1199 ****
  	  if (use_gnu_debug_info_extensions
  	      && TYPE_PRECISION (type) != TYPE_PRECISION (integer_type_node))
! 	    fprintf (asmfile, "@s%d;", TYPE_PRECISION (type));
  
  	  /* If we can use GDB extensions and the size is wider than a
--- 1205,1213 ----
  	  if (use_gnu_debug_info_extensions
  	      && TYPE_PRECISION (type) != TYPE_PRECISION (integer_type_node))
! 	    {
! 	      have_used_extensions = 1;
! 	      fprintf (asmfile, "@s%d;", TYPE_PRECISION (type));
! 	      CHARS (5);
! 	    }
  
  	  /* If we can use GDB extensions and the size is wider than a
*************** dbxout_type (type, full)
*** 1223,1232 ****
--- 1237,1250 ----
  	    {
  	      fprintf (asmfile, "r");
+ 	      CHARS (1);
  	      dbxout_type_index (type);
  	      fprintf (asmfile, ";");
+ 	      CHARS (1);
  	      print_int_cst_octal (TYPE_MIN_VALUE (type));
  	      fprintf (asmfile, ";");
+ 	      CHARS (1);
  	      print_int_cst_octal (TYPE_MAX_VALUE (type));
  	      fprintf (asmfile, ";");
+ 	      CHARS (1);
  	    }
  
*************** dbxout_type (type, full)
*** 1236,1240 ****
    	}
  
-       CHARS (22);
        break;
  
--- 1254,1257 ----
*************** dbxout_type (type, full)
*** 1243,1251 ****
  	 to make sure that `int' was type number 1.  */
        fprintf (asmfile, "r");
        dbxout_type_index (integer_type_node);
!       fputc (';', asmfile);
!       fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC, int_size_in_bytes (type));
        fputs (";0;", asmfile);
!       CHARS (13);
        break;
  
--- 1260,1270 ----
  	 to make sure that `int' was type number 1.  */
        fprintf (asmfile, "r");
+       CHARS (1);
        dbxout_type_index (integer_type_node);
!       putc (';', asmfile);
!       CHARS (1);
!       print_wide_int (int_size_in_bytes (type));
        fputs (";0;", asmfile);
!       CHARS (3);
        break;
  
*************** dbxout_type (type, full)
*** 1253,1260 ****
        if (use_gnu_debug_info_extensions)
  	{
  	  fputs ("@s", asmfile);
! 	  fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! 		   BITS_PER_UNIT * int_size_in_bytes (type));
  	  fputs (";-20;", asmfile);
  	}
        else
--- 1272,1281 ----
        if (use_gnu_debug_info_extensions)
  	{
+ 	  have_used_extensions = 1;
  	  fputs ("@s", asmfile);
! 	  CHARS (2);
! 	  print_wide_int (BITS_PER_UNIT * int_size_in_bytes (type));
  	  fputs (";-20;", asmfile);
+ 	  CHARS (4);
  	}
        else
*************** dbxout_type (type, full)
*** 1263,1270 ****
  	     That is what pcc seems to do.  */
  	  fprintf (asmfile, "r");
  	  dbxout_type_index (char_type_node);
  	  fprintf (asmfile, ";0;%d;", TREE_UNSIGNED (type) ? 255 : 127);
  	}
-       CHARS (9);
        break;
  
--- 1284,1292 ----
  	     That is what pcc seems to do.  */
  	  fprintf (asmfile, "r");
+ 	  CHARS (1);
  	  dbxout_type_index (char_type_node);
  	  fprintf (asmfile, ";0;%d;", TREE_UNSIGNED (type) ? 255 : 127);
+ 	  CHARS (7);
  	}
        break;
  
*************** dbxout_type (type, full)
*** 1272,1283 ****
        if (use_gnu_debug_info_extensions)
  	{
  	  fputs ("@s", asmfile);
! 	  fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! 		   BITS_PER_UNIT * int_size_in_bytes (type));
  	  fputs (";-16;", asmfile);
  	}
        else /* Define as enumeral type (False, True) */
! 	fprintf (asmfile, "eFalse:0,True:1,;");
!       CHARS (17);
        break;
  
--- 1294,1309 ----
        if (use_gnu_debug_info_extensions)
  	{
+ 	  have_used_extensions = 1;
  	  fputs ("@s", asmfile);
! 	  CHARS (2);
! 	  print_wide_int (BITS_PER_UNIT * int_size_in_bytes (type));
  	  fputs (";-16;", asmfile);
+ 	  CHARS (4);
  	}
        else /* Define as enumeral type (False, True) */
! 	{
! 	  fprintf (asmfile, "eFalse:0,True:1,;");
! 	  CHARS (17);
! 	}
        break;
  
*************** dbxout_type (type, full)
*** 1294,1303 ****
  	{
  	  fprintf (asmfile, "r");
  	  dbxout_type_index (type);
! 	  fputc (';', asmfile);
! 	  fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! 		   2 * int_size_in_bytes (TREE_TYPE (type)));
  	  fputs (";0;", asmfile);
! 	  CHARS (12);		/* The number is probably incorrect here.  */
  	}
        else
--- 1320,1330 ----
  	{
  	  fprintf (asmfile, "r");
+ 	  CHARS (1);
  	  dbxout_type_index (type);
! 	  putc (';', asmfile);
! 	  CHARS (1);
! 	  print_wide_int (2 * int_size_in_bytes (TREE_TYPE (type)));
  	  fputs (";0;", asmfile);
! 	  CHARS (3);
  	}
        else
*************** dbxout_type (type, full)
*** 1305,1324 ****
  	  /* Output a complex integer type as a structure,
  	     pending some other way to do it.  */
! 	  fputc ('s', asmfile);
! 	  fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC, int_size_in_bytes (type));
! 
  	  fprintf (asmfile, "real:");
! 	  CHARS (10);
  	  dbxout_type (TREE_TYPE (type), 0);
! 	  fprintf (asmfile, ",%d,%d;",
! 		   0, TYPE_PRECISION (TREE_TYPE (type)));
! 	  CHARS (8);
  	  fprintf (asmfile, "imag:");
  	  CHARS (5);
  	  dbxout_type (TREE_TYPE (type), 0);
! 	  fprintf (asmfile, ",%d,%d;;",
! 		   TYPE_PRECISION (TREE_TYPE (type)),
  		   TYPE_PRECISION (TREE_TYPE (type)));
! 	  CHARS (9);
  	}
        break;
--- 1332,1350 ----
  	  /* Output a complex integer type as a structure,
  	     pending some other way to do it.  */
! 	  putc ('s', asmfile);
! 	  CHARS (1);
! 	  print_wide_int (int_size_in_bytes (type));
  	  fprintf (asmfile, "real:");
! 	  CHARS (5);
! 
  	  dbxout_type (TREE_TYPE (type), 0);
! 	  fprintf (asmfile, ",0,%d;", TYPE_PRECISION (TREE_TYPE (type)));
! 	  CHARS (7);
  	  fprintf (asmfile, "imag:");
  	  CHARS (5);
  	  dbxout_type (TREE_TYPE (type), 0);
! 	  fprintf (asmfile, ",%d,%d;;", TYPE_PRECISION (TREE_TYPE (type)),
  		   TYPE_PRECISION (TREE_TYPE (type)));
! 	  CHARS (10);
  	}
        break;
*************** dbxout_type (type, full)
*** 1329,1339 ****
  	  have_used_extensions = 1;
  	  fputs ("@s", asmfile);
! 	  fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! 		   BITS_PER_UNIT * int_size_in_bytes (type));
! 	  fputc (';', asmfile);
  	  /* 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);
--- 1355,1370 ----
  	  have_used_extensions = 1;
  	  fputs ("@s", asmfile);
! 	  CHARS (2);
! 	  print_wide_int (BITS_PER_UNIT * int_size_in_bytes (type));
! 	  putc (';', asmfile);
! 	  CHARS (1);
! 
  	  /* Check if a bitstring type, which in Chill is
  	     different from a [power]set.  */
  	  if (TYPE_STRING_FLAG (type))
! 	    {
! 	      fprintf (asmfile, "@S;");
! 	      CHARS (3);
! 	    }
  	}
        putc ('S', asmfile);
*************** dbxout_type (type, full)
*** 1348,1360 ****
  	  have_used_extensions = 1;
  	  fputs ("@s", asmfile);
! 	  fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! 		   BITS_PER_UNIT * int_size_in_bytes (type));
! 	  fputc (';', asmfile);
! 	  fprintf (asmfile, "@S;");
! 	  putc ('S', asmfile);
! 	  CHARS (1);
  	  dbxout_type (TYPE_DOMAIN (type), 0);
  	  break;
  	}
        /* Output "a" followed by a range type definition
  	 for the index type of the array
--- 1379,1390 ----
  	  have_used_extensions = 1;
  	  fputs ("@s", asmfile);
! 	  CHARS (2);
! 	  print_wide_int (BITS_PER_UNIT * int_size_in_bytes (type));
! 	  fprintf (asmfile, ";@S;S");
! 	  CHARS (5);
  	  dbxout_type (TYPE_DOMAIN (type), 0);
  	  break;
  	}
+ 
        /* Output "a" followed by a range type definition
  	 for the index type of the array
*************** dbxout_type (type, full)
*** 1367,1370 ****
--- 1397,1401 ----
  	  have_used_extensions = 1;
  	  fprintf (asmfile, "@S;");
+ 	  CHARS (3);
  	}
        tem = TYPE_DOMAIN (type);
*************** dbxout_type (type, full)
*** 1372,1384 ****
  	{
  	  fprintf (asmfile, "ar");
  	  dbxout_type_index (integer_type_node);
  	  fprintf (asmfile, ";0;-1;");
  	}
        else
  	{
  	  fprintf (asmfile, "a");
  	  dbxout_range_type (tem);
  	}
!       CHARS (14);
        dbxout_type (TREE_TYPE (type), 0);
        break;
--- 1403,1418 ----
  	{
  	  fprintf (asmfile, "ar");
+ 	  CHARS (2);
  	  dbxout_type_index (integer_type_node);
  	  fprintf (asmfile, ";0;-1;");
+ 	  CHARS (6);
  	}
        else
  	{
  	  fprintf (asmfile, "a");
+ 	  CHARS (1);
  	  dbxout_range_type (tem);
  	}
! 
        dbxout_type (TREE_TYPE (type), 0);
        break;
*************** dbxout_type (type, full)
*** 1413,1417 ****
  	       and let the definition come when the name is defined.  */
  	    fputs ((TREE_CODE (type) == RECORD_TYPE) ? "xs" : "xu", asmfile);
! 	    CHARS (3);
  #if 0 /* This assertion is legitimately false in C++.  */
  	    /* We shouldn't be outputting a reference to a type before its
--- 1447,1451 ----
  	       and let the definition come when the name is defined.  */
  	    fputs ((TREE_CODE (type) == RECORD_TYPE) ? "xs" : "xu", asmfile);
! 	    CHARS (2);
  #if 0 /* This assertion is legitimately false in C++.  */
  	    /* We shouldn't be outputting a reference to a type before its
*************** dbxout_type (type, full)
*** 1424,1429 ****
  	      dbxout_type_name (type);
  	    else
! 	      fprintf (asmfile, "$$%d", anonymous_type_number++);
  	    fprintf (asmfile, ":");
  	    typevec[TYPE_SYMTAB_ADDRESS (type)].status = TYPE_XREF;
  	    break;
--- 1458,1468 ----
  	      dbxout_type_name (type);
  	    else
! 	      {
! 		fprintf (asmfile, "$$%d", anonymous_type_number++);
! 		CHARS (5);
! 	      }
! 
  	    fprintf (asmfile, ":");
+ 	    CHARS (1);
  	    typevec[TYPE_SYMTAB_ADDRESS (type)].status = TYPE_XREF;
  	    break;
*************** dbxout_type (type, full)
*** 1431,1437 ****
  
  	/* Identify record or union, and print its size.  */
! 	fputc (((TREE_CODE (type) == RECORD_TYPE) ? 's' : 'u'), asmfile);
! 	fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! 		 int_size_in_bytes (type));
  
  	if (use_gnu_debug_info_extensions)
--- 1470,1476 ----
  
  	/* Identify record or union, and print its size.  */
! 	putc (((TREE_CODE (type) == RECORD_TYPE) ? 's' : 'u'), asmfile);
! 	CHARS (1);
! 	print_wide_int (int_size_in_bytes (type));
  
  	if (use_gnu_debug_info_extensions)
*************** dbxout_type (type, full)
*** 1453,1463 ****
  		putc (TREE_VIA_VIRTUAL (child) ? '1' : '0', asmfile);
  		putc (TREE_VIA_PUBLIC (child) ? '2' : '0', asmfile);
! 		fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! 			 (tree_low_cst (BINFO_OFFSET (child), 0)
! 			  * BITS_PER_UNIT));
! 		fputc (',', asmfile);
! 		CHARS (15);
  		dbxout_type (BINFO_TYPE (child), 0);
  		putc (';', asmfile);
  	      }
  	    else
--- 1492,1503 ----
  		putc (TREE_VIA_VIRTUAL (child) ? '1' : '0', asmfile);
  		putc (TREE_VIA_PUBLIC (child) ? '2' : '0', asmfile);
! 		CHARS (2);
! 		print_wide_int (tree_low_cst (BINFO_OFFSET (child), 0)
! 				* BITS_PER_UNIT);
! 		putc (',', asmfile);
! 		CHARS (1);
  		dbxout_type (BINFO_TYPE (child), 0);
  		putc (';', asmfile);
+ 		CHARS (1);
  	      }
  	    else
*************** dbxout_type (type, full)
*** 1467,1488 ****
  		dbxout_type_name (BINFO_TYPE (child));
  		putc (':', asmfile);
  		dbxout_type (BINFO_TYPE (child), full);
! 		fputc (',', asmfile);
! 		fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! 			 tree_low_cst (BINFO_OFFSET (child), 0)
! 			 * BITS_PER_UNIT);
! 		fputc (',', asmfile);
! 		fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! 			 (tree_low_cst (DECL_SIZE (TYPE_NAME
! 						  (BINFO_TYPE (child))), 0)
! 			  * BITS_PER_UNIT));
! 		fputc (';', asmfile);
! 		CHARS (20);
  	      }
  	  }
        }
  
-       CHARS (11);
- 
        /* Write out the field declarations.  */
        dbxout_type_fields (type);
--- 1507,1529 ----
  		dbxout_type_name (BINFO_TYPE (child));
  		putc (':', asmfile);
+ 		CHARS (1);
  		dbxout_type (BINFO_TYPE (child), full);
! 		putc (',', asmfile);
! 		CHARS (1);
! 		print_wide_int (tree_low_cst (BINFO_OFFSET (child), 0)
! 				* BITS_PER_UNIT);
! 		putc (',', asmfile);
! 		CHARS (1);
! 		print_wide_int (tree_low_cst (DECL_SIZE
! 					      (TYPE_NAME
! 					       (BINFO_TYPE (child))),
! 					      0)
! 				* BITS_PER_UNIT);
! 		putc (';', asmfile);
! 		CHARS (1);
  	      }
  	  }
        }
  
        /* Write out the field declarations.  */
        dbxout_type_fields (type);
*************** dbxout_type (type, full)
*** 1494,1497 ****
--- 1535,1539 ----
  
        putc (';', asmfile);
+       CHARS (1);
  
        if (use_gnu_debug_info_extensions && TREE_CODE (type) == RECORD_TYPE
*************** dbxout_type (type, full)
*** 1503,1506 ****
--- 1545,1549 ----
  	  /* Tell GDB+ that it may keep reading.  */
  	  putc ('~', asmfile);
+ 	  CHARS (1);
  
  	  /* We need to write out info about what field this class
*************** dbxout_type (type, full)
*** 1511,1518 ****
  	    {
  	      putc ('%', asmfile);
  	      dbxout_type (DECL_FCONTEXT (TYPE_VFIELD (type)), 0);
  	    }
  	  putc (';', asmfile);
! 	  CHARS (3);
  	}
        break;
--- 1554,1563 ----
  	    {
  	      putc ('%', asmfile);
+ 	      CHARS (1);
  	      dbxout_type (DECL_FCONTEXT (TYPE_VFIELD (type)), 0);
  	    }
+ 
  	  putc (';', asmfile);
! 	  CHARS (1);
  	}
        break;
*************** dbxout_type (type, full)
*** 1529,1536 ****
  	{
  	  fprintf (asmfile, "xe");
! 	  CHARS (3);
  	  dbxout_type_name (type);
  	  typevec[TYPE_SYMTAB_ADDRESS (type)].status = TYPE_XREF;
! 	  fprintf (asmfile, ":");
  	  return;
  	}
--- 1574,1582 ----
  	{
  	  fprintf (asmfile, "xe");
! 	  CHARS (2);
  	  dbxout_type_name (type);
  	  typevec[TYPE_SYMTAB_ADDRESS (type)].status = TYPE_XREF;
! 	  putc (':', asmfile);
! 	  CHARS (1);
  	  return;
  	}
*************** dbxout_type (type, full)
*** 1540,1544 ****
        if (use_gnu_debug_info_extensions
  	  && TYPE_PRECISION (type) != TYPE_PRECISION (integer_type_node))
! 	fprintf (asmfile, "@s%d;", TYPE_PRECISION (type));
        putc ('e', asmfile);
        CHARS (1);
--- 1586,1594 ----
        if (use_gnu_debug_info_extensions
  	  && TYPE_PRECISION (type) != TYPE_PRECISION (integer_type_node))
! 	{
! 	  fprintf (asmfile, "@s%d;", TYPE_PRECISION (type));
! 	  CHARS (5);
! 	}
! 
        putc ('e', asmfile);
        CHARS (1);
*************** dbxout_type (type, full)
*** 1546,1565 ****
  	{
  	  fprintf (asmfile, "%s:", IDENTIFIER_POINTER (TREE_PURPOSE (tem)));
  	  if (TREE_INT_CST_HIGH (TREE_VALUE (tem)) == 0)
! 	    fprintf (asmfile, HOST_WIDE_INT_PRINT_UNSIGNED,
! 		     TREE_INT_CST_LOW (TREE_VALUE (tem)));
  	  else if (TREE_INT_CST_HIGH (TREE_VALUE (tem)) == -1
  		   && (HOST_WIDE_INT) TREE_INT_CST_LOW (TREE_VALUE (tem)) < 0)
! 	    fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
! 		     TREE_INT_CST_LOW (TREE_VALUE (tem)));
  	  else
  	    print_int_cst_octal (TREE_VALUE (tem));
! 	  fprintf (asmfile, ",");
! 	  CHARS (20 + IDENTIFIER_LENGTH (TREE_PURPOSE (tem)));
  	  if (TREE_CHAIN (tem) != 0)
! 	    {
! 	      CONTIN;
! 	    }
  	}
        putc (';', asmfile);
        CHARS (1);
--- 1596,1614 ----
  	{
  	  fprintf (asmfile, "%s:", IDENTIFIER_POINTER (TREE_PURPOSE (tem)));
+ 	  CHARS (IDENTIFIER_LENGTH (TREE_PURPOSE (tem)) + 1);
  	  if (TREE_INT_CST_HIGH (TREE_VALUE (tem)) == 0)
! 	    print_wide_int (TREE_INT_CST_LOW (TREE_VALUE (tem)));
  	  else if (TREE_INT_CST_HIGH (TREE_VALUE (tem)) == -1
  		   && (HOST_WIDE_INT) TREE_INT_CST_LOW (TREE_VALUE (tem)) < 0)
! 	    print_wide_int (TREE_INT_CST_LOW (TREE_VALUE (tem)));
  	  else
  	    print_int_cst_octal (TREE_VALUE (tem));
! 
! 	  putc (',', asmfile);
! 	  CHARS (1);
  	  if (TREE_CHAIN (tem) != 0)
! 	    CONTIN;
  	}
+ 
        putc (';', asmfile);
        CHARS (1);
*************** dbxout_type (type, full)
*** 1590,1597 ****
  	}
        else
! 	{
! 	  /* Treat it as a function type.  */
! 	  dbxout_type (TREE_TYPE (type), 0);
! 	}
        break;
  
--- 1639,1644 ----
  	}
        else
! 	/* Treat it as a function type.  */
! 	dbxout_type (TREE_TYPE (type), 0);
        break;
  
*************** dbxout_type (type, full)
*** 1608,1616 ****
  	}
        else
! 	{
! 	  /* Should print as an int, because it is really
! 	     just an offset.  */
! 	  dbxout_type (integer_type_node, 0);
! 	}
        break;
  
--- 1655,1660 ----
  	}
        else
! 	/* Should print as an int, because it is really just an offset.  */
! 	dbxout_type (integer_type_node, 0);
        break;
  
*************** print_int_cst_octal (c)
*** 1659,1662 ****
--- 1703,1707 ----
  
    fprintf (asmfile, "0");
+   CHARS (1);
  
    if (excess == 3)
*************** print_int_cst_octal (c)
*** 1677,1680 ****
--- 1722,1726 ----
  
        fprintf (asmfile, "%o%01o", (int) beg, (int) middle);
+       CHARS (2);
        print_octal (end, HOST_BITS_PER_WIDE_INT / 3);
      }
*************** print_octal (value, digits)
*** 1690,1695 ****
--- 1736,1762 ----
    for (i = digits - 1; i >= 0; i--)
      fprintf (asmfile, "%01o", (int) ((value >> (3 * i)) & 7));
+ 
+   CHARS (digits);
  }
  
+ /* Output C in decimal while adjusting the number of digits written.  */
+ 
+ static void
+ print_wide_int (c)
+      HOST_WIDE_INT c;
+ {
+   int digs = 0;
+ 
+   fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC, c);
+ 
+   if (c < 0)
+     digs++, c = -c;
+ 
+   while (c > 0)
+     c /= 10; digs++;
+ 
+   CHARS (digs);
+ }
+       
  /* Output the name of type TYPE, with no punctuation.
     Such names can be set up either by typedef declarations
*************** dbxout_symbol_name (decl, suffix, letter
*** 2258,2262 ****
  	   (suffix ? suffix : ""));
  
!   if (letter) putc (letter, asmfile);
  }
  
--- 2325,2330 ----
  	   (suffix ? suffix : ""));
  
!   if (letter)
!     putc (letter, asmfile);
  }
  
*************** dbxout_parms (parms)
*** 2480,2484 ****
  	    if (DECL_NAME (parms))
  	      {
! 		current_sym_nchars = 2 + strlen (IDENTIFIER_POINTER (DECL_NAME (parms)));
  
  		fprintf (asmfile, "%s\"%s:%c", ASM_STABS_OP,
--- 2548,2553 ----
  	    if (DECL_NAME (parms))
  	      {
! 		current_sym_nchars
! 		  = 2 + strlen (IDENTIFIER_POINTER (DECL_NAME (parms)));
  
  		fprintf (asmfile, "%s\"%s:%c", ASM_STABS_OP,
*************** dbxout_block (block, depth, args)
*** 2716,2720 ****
  	      assemble_name (asmfile, buf);
  #if DBX_BLOCKS_FUNCTION_RELATIVE
! 	      fputc ('-', asmfile);
  	      assemble_name (asmfile, begin_label);
  #endif
--- 2785,2789 ----
  	      assemble_name (asmfile, buf);
  #if DBX_BLOCKS_FUNCTION_RELATIVE
! 	      putc ('-', asmfile);
  	      assemble_name (asmfile, begin_label);
  #endif
*************** dbxout_block (block, depth, args)
*** 2746,2750 ****
  	      assemble_name (asmfile, buf);
  #if DBX_BLOCKS_FUNCTION_RELATIVE
! 	      fputc ('-', asmfile);
  	      assemble_name (asmfile, begin_label);
  #endif
--- 2815,2819 ----
  	      assemble_name (asmfile, buf);
  #if DBX_BLOCKS_FUNCTION_RELATIVE
! 	      putc ('-', asmfile);
  	      assemble_name (asmfile, begin_label);
  #endif


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]