diff options
author | Andrew Macleod <amacleod@gcc.gnu.org> | 1998-03-16 12:51:56 +0000 |
---|---|---|
committer | Andrew Macleod <amacleod@gcc.gnu.org> | 1998-03-16 12:51:56 +0000 |
commit | a8c3510c8f00f0061767bc47b693fbdec5de1ab8 (patch) | |
tree | 47d7d14fb792dc556fc2075ed8243a885efa6178 /gcc/final.c | |
parent | 77d33a842d42d8de1dcfa142f8202ea60b4403ac (diff) | |
download | gcc-a8c3510c8f00f0061767bc47b693fbdec5de1ab8.zip gcc-a8c3510c8f00f0061767bc47b693fbdec5de1ab8.tar.gz gcc-a8c3510c8f00f0061767bc47b693fbdec5de1ab8.tar.bz2 |
final.c (final): Initialize the table indicating which instructions belong in which exception region.
* final.c (final): Initialize the table indicating which instructions
belong in which exception region.
From-SVN: r18625
Diffstat (limited to 'gcc/final.c')
-rw-r--r-- | gcc/final.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/gcc/final.c b/gcc/final.c index 151697d..70a6fbe 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -1857,6 +1857,7 @@ final (first, file, optimize, prescan) { register rtx insn; int max_line = 0; + int max_uid = 0; last_ignored_compare = 0; new_block = 1; @@ -1901,8 +1902,16 @@ final (first, file, optimize, prescan) bzero (line_note_exists, max_line + 1); for (insn = first; insn; insn = NEXT_INSN (insn)) - if (GET_CODE (insn) == NOTE && NOTE_LINE_NUMBER (insn) > 0) - line_note_exists[NOTE_LINE_NUMBER (insn)] = 1; + { + if (INSN_UID (insn) > max_uid) /* find largest UID */ + max_uid = INSN_UID (insn); + if (GET_CODE (insn) == NOTE && NOTE_LINE_NUMBER (insn) > 0) + line_note_exists[NOTE_LINE_NUMBER (insn)] = 1; + } + + /* Initialize insn_eh_region table if eh is being used. */ + + init_insn_eh_region (first, max_uid); init_recog (); @@ -1921,6 +1930,8 @@ final (first, file, optimize, prescan) if the last insn was a conditional branch. */ if (profile_block_flag && new_block) add_bb (file); + + free_insn_eh_region (); } /* The final scan for one insn, INSN. |