aboutsummaryrefslogtreecommitdiff
path: root/gcc/final.c
diff options
context:
space:
mode:
authorAndrew Macleod <amacleod@gcc.gnu.org>1998-03-16 12:51:56 +0000
committerAndrew Macleod <amacleod@gcc.gnu.org>1998-03-16 12:51:56 +0000
commita8c3510c8f00f0061767bc47b693fbdec5de1ab8 (patch)
tree47d7d14fb792dc556fc2075ed8243a885efa6178 /gcc/final.c
parent77d33a842d42d8de1dcfa142f8202ea60b4403ac (diff)
downloadgcc-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.c15
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.