diff options
author | Jan Hubicka <jh@suse.cz> | 2006-11-11 16:50:16 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2006-11-11 15:50:16 +0000 |
commit | 6039a0c74a90a4a344e2c000115acfa46293ef8f (patch) | |
tree | 5f4208819ca7ad9f4213c79c692e4029d0966257 /gcc/function.c | |
parent | f9f770a8d56552aab041b8de6548858241a03f53 (diff) | |
download | gcc-6039a0c74a90a4a344e2c000115acfa46293ef8f.zip gcc-6039a0c74a90a4a344e2c000115acfa46293ef8f.tar.gz gcc-6039a0c74a90a4a344e2c000115acfa46293ef8f.tar.bz2 |
tree-pass.h (pass_purge_lineno_notes): Remove declaration.
* tree-pass.h (pass_purge_lineno_notes): Remove declaration.
* modulo-sched.c (find_line_note): Remove.
(loop_canon_p): Do not worry about line number notes.
(sms_schedule): Likewise.
* cse.c (cse_main): Likewise.
* regmove.c (fixup_match_1): Likewise
* function.c (emit_return_info_block): Likewise.
(expand_function_end): Likewise.
(thread_prologue_an_epilogue_insns): Likewise.
* cfgrtl.c (try_redirect_by_replacing_jump, rtl_tidy_fallthru_edge):
Likewise.
* emit-rtl.c (find_line_note, emit_insn_after_with_line_notes,
emit_note_copy_after): Kill.
(emit_note_copy): Do not worry about line numbers.
* jump.c (purge_line_number_notes): Kill.
(pass_purge_lineno_notes): Kill.
* cfgcleanup.c (rest_of_handle_jump2): Kill purge_line_number_notes
call.
* rtl.h (emit_note_copy_after, emit_insn_after_with_line_notes): Kill.
* passes.c (init_optimization_passes): Don't purge_lineno_notes.
* sched-ebb.c (schedule_ebbs): Don't do rm_redundant_line_notes.
* tree-pass.h (pass_purge_lineno_notes): Kill.
* sched-ebb.c (schedule_ebb): Don't rm_line_notes,
rm_redundant_line_notes.
* sched-rgb.c (schedule_region): Don't rm_line_notes,
rm_redundant_line_notes.
* sched-int.h (rm_line_notes, rm_redundant_line_notes): Kill.
* haifa-sched.c: Update comment about handling notes.
(unlink_line_notes): Kill.
(rm_line_notes): Kill.
(save_line_notes): Simplify.
(rm_redundant_line_notes): Kill.
From-SVN: r118693
Diffstat (limited to 'gcc/function.c')
-rw-r--r-- | gcc/function.c | 88 |
1 files changed, 5 insertions, 83 deletions
diff --git a/gcc/function.c b/gcc/function.c index cef7fe3..a27d8cb 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -203,7 +203,7 @@ extern tree debug_find_var_in_block_tree (tree, tree); static void record_insns (rtx, VEC(int,heap) **) ATTRIBUTE_UNUSED; static int contains (rtx, VEC(int,heap) **); #ifdef HAVE_return -static void emit_return_into_block (basic_block, rtx); +static void emit_return_into_block (basic_block); #endif #if defined(HAVE_epilogue) && defined(INCOMING_RETURN_ADDR_RTX) static rtx keep_stack_depressed (rtx); @@ -4340,14 +4340,6 @@ expand_function_end (void) without returning a value. */ emit_note (NOTE_INSN_FUNCTION_END); - /* Must mark the last line number note in the function, so that the test - coverage code can avoid counting the last line twice. This just tells - the code to ignore the immediately following line note, since there - already exists a copy of this note somewhere above. This line number - note is still needed for debugging though, so we can't delete it. */ - if (flag_test_coverage) - emit_note (NOTE_INSN_REPEATED_LINE_NUMBER); - /* Output a linenumber for the end of the function. SDB depends on this. */ force_next_line_note (); @@ -4653,11 +4645,9 @@ sibcall_epilogue_contains (rtx insn) block_for_insn appropriately. */ static void -emit_return_into_block (basic_block bb, rtx line_note) +emit_return_into_block (basic_block bb) { emit_jump_insn_after (gen_return (), BB_END (bb)); - if (line_note) - emit_note_copy_after (line_note, PREV_INSN (BB_END (bb))); } #endif /* HAVE_return */ @@ -5123,18 +5113,6 @@ thread_prologue_and_epilogue_insns (rtx f ATTRIBUTE_UNUSED) if (BB_HEAD (last) == label && LABEL_P (label)) { edge_iterator ei2; - rtx epilogue_line_note = NULL_RTX; - - /* Locate the line number associated with the closing brace, - if we can find one. */ - for (seq = get_last_insn (); - seq && ! active_insn_p (seq); - seq = PREV_INSN (seq)) - if (NOTE_P (seq) && NOTE_LINE_NUMBER (seq) > 0) - { - epilogue_line_note = seq; - break; - } for (ei2 = ei_start (last->preds); (e = ei_safe_edge (ei2)); ) { @@ -5158,7 +5136,7 @@ thread_prologue_and_epilogue_insns (rtx f ATTRIBUTE_UNUSED) with a simple return instruction. */ if (simplejump_p (jump)) { - emit_return_into_block (bb, epilogue_line_note); + emit_return_into_block (bb); delete_insn (jump); } @@ -5195,7 +5173,7 @@ thread_prologue_and_epilogue_insns (rtx f ATTRIBUTE_UNUSED) this is still reachable will be determined later. */ emit_barrier_after (BB_END (last)); - emit_return_into_block (last, epilogue_line_note); + emit_return_into_block (last); epilogue_end = BB_END (last); single_succ_edge (last)->flags &= ~EDGE_FALLTHRU; goto epilogue_done; @@ -5297,61 +5275,6 @@ epilogue_done: } #endif -#ifdef HAVE_prologue - /* This is probably all useless now that we use locators. */ - if (prologue_end) - { - rtx insn, prev; - - /* GDB handles `break f' by setting a breakpoint on the first - line note after the prologue. Which means (1) that if - there are line number notes before where we inserted the - prologue we should move them, and (2) we should generate a - note before the end of the first basic block, if there isn't - one already there. - - ??? This behavior is completely broken when dealing with - multiple entry functions. We simply place the note always - into first basic block and let alternate entry points - to be missed. - */ - - for (insn = prologue_end; insn; insn = prev) - { - prev = PREV_INSN (insn); - if (NOTE_P (insn) && NOTE_LINE_NUMBER (insn) > 0) - { - /* Note that we cannot reorder the first insn in the - chain, since rest_of_compilation relies on that - remaining constant. */ - if (prev == NULL) - break; - reorder_insns (insn, insn, prologue_end); - } - } - - /* Find the last line number note in the first block. */ - for (insn = BB_END (ENTRY_BLOCK_PTR->next_bb); - insn != prologue_end && insn; - insn = PREV_INSN (insn)) - if (NOTE_P (insn) && NOTE_LINE_NUMBER (insn) > 0) - break; - - /* If we didn't find one, make a copy of the first line number - we run across. */ - if (! insn) - { - for (insn = next_active_insn (prologue_end); - insn; - insn = PREV_INSN (insn)) - if (NOTE_P (insn) && NOTE_LINE_NUMBER (insn) > 0) - { - emit_note_copy_after (insn, prologue_end); - break; - } - } - } -#endif #ifdef HAVE_epilogue if (epilogue_end) { @@ -5366,8 +5289,7 @@ epilogue_done: { next = NEXT_INSN (insn); if (NOTE_P (insn) - && (NOTE_LINE_NUMBER (insn) > 0 - || NOTE_LINE_NUMBER (insn) == NOTE_INSN_FUNCTION_BEG + && (NOTE_LINE_NUMBER (insn) == NOTE_INSN_FUNCTION_BEG || NOTE_LINE_NUMBER (insn) == NOTE_INSN_FUNCTION_END)) reorder_insns (insn, insn, PREV_INSN (epilogue_end)); } |