parent
a53d0bcc79
commit
196cedd028
35
gcc/dbxout.c
35
gcc/dbxout.c
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
24
gcc/jump.c
24
gcc/jump.c
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue