diff options
author | Jan Hubicka <jh@suse.cz> | 2001-08-07 22:24:08 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2001-08-07 20:24:08 +0000 |
commit | 570a98eb7c116ea107e1c2167da244782cc4b988 (patch) | |
tree | 60a5182f2490898a51da85e16138b7f79e245443 /gcc/cse.c | |
parent | ff25793cc1ffe5114b6ce07b44c75698d12ab0b2 (diff) | |
download | gcc-570a98eb7c116ea107e1c2167da244782cc4b988.zip gcc-570a98eb7c116ea107e1c2167da244782cc4b988.tar.gz gcc-570a98eb7c116ea107e1c2167da244782cc4b988.tar.bz2 |
calls.c (expand_call): Do not emit INSN_SETJMP note.
* calls.c (expand_call): Do not emit INSN_SETJMP note.
(emit_library_call_value_1): Likewise.
(emit_call_1): Emit REG_SETJMP note.
* cse.c (cse_end_of_basic_block): Use REG_SETJMP instead
of INSN_SETJMP
* cselib.c (cselib_process_insn): Likewise.
* flow.c (propagate_block): Likewise.
* loop.c (find_and_verify_loops): Likewise.
* reload.c (find_equiv_regs): Likewise.
* reload1.c (reload): Likewise.
* resource.c (mark_referenced_resources,
mark_set_resources): Likewise.
* sched-deps (sched_analyze_insn, sched_analyze): Likewise.
* final.c (final_scan_insn): Remove NOTE_INSN_SETJMP.
* haifa-sched.c (unlink_other_notes): Likewise.
(reemit_notes): Likewise.
* sched-ebb.c (sched_ebb): Likewise.
* sched-rgc.c (sched_region): Likewise.
* rtl.c (note_insn_name): Likewise.
(reg_note_name): Add REG_SETJMP
* rtl.h (reg_note): Add REG_SETJMP.
(insn_note): Remove NOTE_INSN_SETJMP.
* profile.c (branch_prob): Add fake edges for setjmp.
From-SVN: r44700
Diffstat (limited to 'gcc/cse.c')
-rw-r--r-- | gcc/cse.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -6855,8 +6855,8 @@ cse_end_of_basic_block (insn, data, follow_jumps, after_loop, skip_blocks) /* Don't cse over a call to setjmp; on some machines (eg VAX) the regs restored by the longjmp come from a later time than the setjmp. */ - if (GET_CODE (p) == NOTE - && NOTE_LINE_NUMBER (p) == NOTE_INSN_SETJMP) + if (PREV_INSN (p) && GET_CODE (PREV_INSN (p)) == CALL_INSN + && find_reg_note (PREV_INSN (p), REG_SETJMP, NULL)) break; /* A PARALLEL can have lots of SETs in it, @@ -6906,7 +6906,8 @@ cse_end_of_basic_block (insn, data, follow_jumps, after_loop, skip_blocks) for (q = PREV_INSN (JUMP_LABEL (p)); q; q = PREV_INSN (q)) if ((GET_CODE (q) != NOTE || NOTE_LINE_NUMBER (q) == NOTE_INSN_LOOP_END - || NOTE_LINE_NUMBER (q) == NOTE_INSN_SETJMP) + || (PREV_INSN (q) && GET_CODE (PREV_INSN (q)) == CALL_INSN + && find_reg_note (PREV_INSN (q), REG_SETJMP, NULL))) && (GET_CODE (q) != CODE_LABEL || LABEL_NUSES (q) != 0)) break; |