diff options
author | kan <kan@FreeBSD.org> | 2005-06-03 03:50:42 +0000 |
---|---|---|
committer | kan <kan@FreeBSD.org> | 2005-06-03 03:50:42 +0000 |
commit | f8dd8336e3484d2d7f4887c5583585521dd055d0 (patch) | |
tree | 56d842dca34faa3e40f969e13617dfdbb051d690 /contrib/gcc/emit-rtl.c | |
parent | a101babe926f42d1c4b46f430425c21fdcda6f97 (diff) | |
download | FreeBSD-src-f8dd8336e3484d2d7f4887c5583585521dd055d0.zip FreeBSD-src-f8dd8336e3484d2d7f4887c5583585521dd055d0.tar.gz |
Stock files.
Diffstat (limited to 'contrib/gcc/emit-rtl.c')
-rw-r--r-- | contrib/gcc/emit-rtl.c | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/contrib/gcc/emit-rtl.c b/contrib/gcc/emit-rtl.c index f6e44f9..9df2d6c 100644 --- a/contrib/gcc/emit-rtl.c +++ b/contrib/gcc/emit-rtl.c @@ -2910,11 +2910,19 @@ get_first_nonnote_insn (void) { rtx insn = first_insn; - while (insn) + if (insn) { - insn = next_insn (insn); - if (insn == 0 || GET_CODE (insn) != NOTE) - break; + if (NOTE_P (insn)) + for (insn = next_insn (insn); + insn && NOTE_P (insn); + insn = next_insn (insn)) + continue; + else + { + if (GET_CODE (insn) == INSN + && GET_CODE (PATTERN (insn)) == SEQUENCE) + insn = XVECEXP (PATTERN (insn), 0, 0); + } } return insn; @@ -2928,11 +2936,20 @@ get_last_nonnote_insn (void) { rtx insn = last_insn; - while (insn) + if (insn) { - insn = previous_insn (insn); - if (insn == 0 || GET_CODE (insn) != NOTE) - break; + if (NOTE_P (insn)) + for (insn = previous_insn (insn); + insn && NOTE_P (insn); + insn = previous_insn (insn)) + continue; + else + { + if (GET_CODE (insn) == INSN + && GET_CODE (PATTERN (insn)) == SEQUENCE) + insn = XVECEXP (PATTERN (insn), 0, + XVECLEN (PATTERN (insn), 0) - 1); + } } return insn; |