If you want to try Bryan's integrate.c diffs, these are better (though
still not necessarily correct). The main difference is that NOTEs
such as NOTE_INSN_LOOP_BEG should not be deleted--only line number
notes should be deleted.
teacake% diff -c2 integrate.c~ integrate.c
*** integrate.c~ Mon Mar 5 15:53:16 1990
--- integrate.c Mon Mar 26 08:23:07 1990
***************
*** 739,742 ****
--- 739,746 ----
}
+
+ /* Non-zero if we are trying to reduce the amount of debug information output */
+ extern int flag_minimal_debug;
+
/* Integrate the procedure defined by FNDECL. Note that this function
may wind up calling itself. Since the static variables are not
***************
*** 835,840 ****
arg_vec = (rtx *)alloca (nargs * sizeof (rtx));
! /* Say where this function starts. */
! emit_note (DECL_SOURCE_FILE (fndecl), DECL_SOURCE_LINE (fndecl));
for (formal = DECL_ARGUMENTS (fndecl),
--- 839,845 ----
arg_vec = (rtx *)alloca (nargs * sizeof (rtx));
! if (!flag_minimal_debug)
! /* Say where this function starts. */
! emit_note (DECL_SOURCE_FILE (fndecl), DECL_SOURCE_LINE (fndecl));
for (formal = DECL_ARGUMENTS (fndecl),
***************
*** 1310,1314 ****
so we have only one of each in the current function. */
if (NOTE_LINE_NUMBER (insn) != NOTE_INSN_FUNCTION_END
! && NOTE_LINE_NUMBER (insn) != NOTE_INSN_FUNCTION_BEG)
copy = emit_note (NOTE_SOURCE_FILE (insn), NOTE_LINE_NUMBER (insn));
else
--- 1315,1320 ----
so we have only one of each in the current function. */
if (NOTE_LINE_NUMBER (insn) != NOTE_INSN_FUNCTION_END
! && NOTE_LINE_NUMBER (insn) != NOTE_INSN_FUNCTION_BEG
! && (!flag_minimal_debug || NOTE_LINE_NUMBER (insn) < 0))
copy = emit_note (NOTE_SOURCE_FILE (insn), NOTE_LINE_NUMBER (insn));
else
teacake%
Michael