diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-08-07 20:24:08 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-08-07 20:24:08 +0000 |
commit | 9239aee664338dfa16b622edaa5a9c201e9ffd20 (patch) | |
tree | 60a5182f2490898a51da85e16138b7f79e245443 /gcc/loop.c | |
parent | 4c088c24ab96eae88be5177016af7a58f9e416b9 (diff) | |
download | gcc-9239aee664338dfa16b622edaa5a9c201e9ffd20.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44700 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/loop.c')
-rw-r--r-- | gcc/loop.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/gcc/loop.c b/gcc/loop.c index 50b430d7cd8..46225bbbefc 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -2512,19 +2512,6 @@ find_and_verify_loops (f, loops) current_loop = next_loop; break; - case NOTE_INSN_SETJMP: - /* In this case, we must invalidate our current loop and any - enclosing loop. */ - for (loop = current_loop; loop; loop = loop->outer) - { - loop->invalid = 1; - if (loop_dump_stream) - fprintf (loop_dump_stream, - "\nLoop at %d ignored due to setjmp.\n", - INSN_UID (loop->start)); - } - break; - case NOTE_INSN_LOOP_CONT: current_loop->cont = insn; break; @@ -2545,6 +2532,21 @@ find_and_verify_loops (f, loops) break; } + if (GET_CODE (insn) == CALL + && find_reg_note (insn, REG_SETJMP, NULL)) + { + /* In this case, we must invalidate our current loop and any + enclosing loop. */ + for (loop = current_loop; loop; loop = loop->outer) + { + loop->invalid = 1; + if (loop_dump_stream) + fprintf (loop_dump_stream, + "\nLoop at %d ignored due to setjmp.\n", + INSN_UID (loop->start)); + } + } + /* Note that this will mark the NOTE_INSN_LOOP_END note as being in the enclosing loop, but this doesn't matter. */ uid_loop[INSN_UID (insn)] = current_loop; |