*** empty log message ***

From-SVN: r1438
This commit is contained in:
Richard Stallman 1992-07-05 03:31:52 +00:00
parent a53d0bcc79
commit 196cedd028
5 changed files with 47 additions and 26 deletions

View File

@ -396,7 +396,7 @@ dbxout_init (asm_file, input_file_name, syms)
/* Put the current working directory in an N_SO symbol. */
#ifndef DBX_WORKING_DIRECTORY /* Only some versions of DBX want this,
but GDB always does. */
if (use_gdb_dbx_extensions)
if (use_gnu_debug_info_extensions)
#endif
{
if (cwd || (cwd = getpwd ()))
@ -552,7 +552,7 @@ dbxout_type_fields (type)
if (tem != TYPE_FIELDS (type))
CONTIN;
if (use_gdb_dbx_extensions
if (use_gnu_debug_info_extensions
&& flag_minimal_debug
&& TREE_CODE (tem) == FIELD_DECL
&& DECL_VIRTUAL_P (tem)
@ -572,7 +572,7 @@ dbxout_type_fields (type)
fprintf (asmfile, "%s:", IDENTIFIER_POINTER (DECL_NAME (tem)));
CHARS (2 + IDENTIFIER_LENGTH (DECL_NAME (tem)));
if (use_gdb_dbx_extensions
if (use_gnu_debug_info_extensions
&& (TREE_PRIVATE (tem) || TREE_PROTECTED (tem)
|| TREE_CODE (tem) != FIELD_DECL))
{
@ -591,7 +591,7 @@ dbxout_type_fields (type)
if (TREE_CODE (tem) == VAR_DECL)
{
if (TREE_STATIC (tem) && use_gdb_dbx_extensions)
if (TREE_STATIC (tem) && use_gnu_debug_info_extensions)
{
char *name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (tem));
have_used_extensions = 1;
@ -704,11 +704,10 @@ dbxout_type_methods (type)
type_identifier_length = IDENTIFIER_LENGTH (type_encoding);
if (TREE_CODE (methods) == FUNCTION_DECL)
fndecl = methods;
else if (TREE_VEC_ELT (methods, 0) != NULL_TREE)
if (TREE_VEC_ELT (methods, 0) != NULL_TREE)
fndecl = TREE_VEC_ELT (methods, 0);
else fndecl = TREE_VEC_ELT (methods, 1);
else
fndecl = TREE_VEC_ELT (methods, 1);
while (fndecl)
{
@ -1013,7 +1012,7 @@ dbxout_type (type, full, show_arg_types)
fprintf (asmfile, (TREE_CODE (type) == RECORD_TYPE) ? "s%d" : "u%d",
TREE_INT_CST_LOW (tem));
if (use_gdb_dbx_extensions)
if (use_gnu_debug_info_extensions)
{
if (n_baseclasses)
{
@ -1025,7 +1024,7 @@ dbxout_type (type, full, show_arg_types)
for (i = 0; i < n_baseclasses; i++)
{
tree child = TREE_VEC_ELT (BINFO_BASETYPES (TYPE_BINFO (type)), i);
if (use_gdb_dbx_extensions)
if (use_gnu_debug_info_extensions)
{
have_used_extensions = 1;
putc (TREE_VIA_VIRTUAL (child) ? '1'
@ -1059,14 +1058,14 @@ dbxout_type (type, full, show_arg_types)
/* Write out the field declarations. */
dbxout_type_fields (type);
if (use_gdb_dbx_extensions && TYPE_METHODS (type) != NULL_TREE)
if (use_gnu_debug_info_extensions && TYPE_METHODS (type) != NULL_TREE)
{
have_used_extensions = 1;
dbxout_type_methods (type);
}
putc (';', asmfile);
if (use_gdb_dbx_extensions && TREE_CODE (type) == RECORD_TYPE
if (use_gnu_debug_info_extensions && TREE_CODE (type) == RECORD_TYPE
/* Avoid the ~ if we don't really need it--it confuses dbx. */
&& TYPE_VFIELD (type))
{
@ -1127,7 +1126,7 @@ dbxout_type (type, full, show_arg_types)
break;
case METHOD_TYPE:
if (use_gdb_dbx_extensions)
if (use_gnu_debug_info_extensions)
{
have_used_extensions = 1;
putc ('#', asmfile);
@ -1162,7 +1161,7 @@ dbxout_type (type, full, show_arg_types)
break;
case OFFSET_TYPE:
if (use_gdb_dbx_extensions)
if (use_gnu_debug_info_extensions)
{
have_used_extensions = 1;
putc ('@', asmfile);
@ -1181,9 +1180,9 @@ dbxout_type (type, full, show_arg_types)
break;
case REFERENCE_TYPE:
if (use_gdb_dbx_extensions)
if (use_gnu_debug_info_extensions)
have_used_extensions = 1;
putc (use_gdb_dbx_extensions ? '&' : '*', asmfile);
putc (use_gnu_debug_info_extensions ? '&' : '*', asmfile);
CHARS (1);
dbxout_type (TREE_TYPE (type), 0, 0);
break;
@ -1380,7 +1379,7 @@ dbxout_symbol (decl, local)
if ((TREE_CODE (type) == RECORD_TYPE
|| TREE_CODE (type) == UNION_TYPE)
&& TYPE_NAME (type) == decl
&& !(use_gdb_dbx_extensions && have_used_extensions)
&& !(use_gnu_debug_info_extensions && have_used_extensions)
&& !TREE_ASM_WRITTEN (TYPE_NAME (type)))
{
tree name = TYPE_NAME (type);
@ -1407,7 +1406,7 @@ dbxout_symbol (decl, local)
|| TREE_CODE (type) == UNION_TYPE)
&& TYPE_NAME (type) == decl)
{
if (use_gdb_dbx_extensions && have_used_extensions)
if (use_gnu_debug_info_extensions && have_used_extensions)
{
putc ('T', asmfile);
TREE_ASM_WRITTEN (TYPE_NAME (type)) = 1;

View File

@ -1038,6 +1038,15 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
#ifdef DWARF_DEBUGGING_INFO
if (write_symbols == DWARF_DEBUG && block_depth >= 1)
dwarfout_end_block (pending_blocks[block_depth]);
#endif
}
else if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_DELETED_LABEL
&& (debug_info_level == DINFO_LEVEL_NORMAL
|| debug_info_level == DINFO_LEVEL_VERBOSE))
{
#ifdef DWARF_DEBUGGING_INFO
if (write_symbols == DWARF_DEBUG)
dwarfout_label (insn);
#endif
}
else if (NOTE_LINE_NUMBER (insn) > 0)

View File

@ -2890,6 +2890,8 @@ delete_insn (insn)
{
register rtx next = NEXT_INSN (insn);
register rtx prev = PREV_INSN (insn);
register int was_code_label = (GET_CODE (insn) == CODE_LABEL);
register int dont_really_delete = 0;
while (next && INSN_DELETED_P (next))
next = NEXT_INSN (next);
@ -2898,9 +2900,18 @@ delete_insn (insn)
if (INSN_DELETED_P (insn))
return next;
/* Mark this insn as deleted. */
INSN_DELETED_P (insn) = 1;
/* Don't delete user-declared labels. Convert them to special NOTEs
instead. */
if (was_code_label && LABEL_NAME (insn) != 0)
{
PUT_CODE (insn, NOTE);
NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED_LABEL;
NOTE_SOURCE_FILE (insn) = 0;
dont_really_delete = 1;
}
else
/* Mark this insn as deleted. */
INSN_DELETED_P (insn) = 1;
/* If this is an unconditional jump, delete it from the jump chain. */
if (simplejump_p (insn))
@ -2917,7 +2928,7 @@ delete_insn (insn)
/* Patch out INSN (and the barrier if any) */
if (optimize)
if (optimize && ! dont_really_delete)
{
if (prev)
{
@ -2964,7 +2975,7 @@ delete_insn (insn)
delete the dispatch table. The tablejump must have gone already.
It isn't useful to fall through into a table. */
if (GET_CODE (insn) == CODE_LABEL
if (was_code_label
&& NEXT_INSN (insn) != 0
&& GET_CODE (NEXT_INSN (insn)) == JUMP_INSN
&& (GET_CODE (PATTERN (NEXT_INSN (insn))) == ADDR_VEC
@ -2973,8 +2984,7 @@ delete_insn (insn)
/* If INSN was a label, delete insns following it if now unreachable. */
if (GET_CODE (insn) == CODE_LABEL && prev
&& GET_CODE (prev) == BARRIER)
if (was_code_label && prev && GET_CODE (prev) == BARRIER)
{
register RTX_CODE code;
while (next != 0

View File

@ -170,7 +170,8 @@ char *note_insn_name[] = { "NOTE_INSN_FUNCTION_BEG", "NOTE_INSN_DELETED",
"NOTE_INSN_LOOP_BEG", "NOTE_INSN_LOOP_END",
"NOTE_INSN_FUNCTION_END", "NOTE_INSN_SETJMP",
"NOTE_INSN_LOOP_CONT", "NOTE_INSN_LOOP_VTOP",
"NOTE_INSN_PROLOGUE_END", "NOTE_INSN_EPILOGUE_BEG" };
"NOTE_INSN_PROLOGUE_END", "NOTE_INSN_EPILOGUE_BEG",
"NOT_INSN_DELETED_LABEL"};
char *reg_note_name[] = { "", "REG_DEAD", "REG_INC", "REG_EQUIV", "REG_WAS_0",
"REG_EQUAL", "REG_RETVAL", "REG_LIBCALL",

View File

@ -340,6 +340,8 @@ extern char *reg_note_name[];
#define NOTE_INSN_PROLOGUE_END -10
/* This marks the point immediately prior to the first epilogue insn. */
#define NOTE_INSN_EPILOGUE_BEG -11
/* Generated in place of user-declared labels when they are deleted. */
#define NOTE_INSN_DELETED_LABEL -12
/* Don't forget to change note_insn_name in rtl.c. */
#define NOTE_DECL_NAME(INSN) ((INSN)->fld[3].rtstr)