diff options
author | John David Anglin <dave.anglin@nrc-cnrc.gc.ca> | 2004-12-05 04:05:59 +0000 |
---|---|---|
committer | John David Anglin <danglin@gcc.gnu.org> | 2004-12-05 04:05:59 +0000 |
commit | 91373fe8f7f94b846d06ada9bd3766b694eebc4f (patch) | |
tree | a481184a6f11891930cc7d8aea7aa98ad956903a /gcc/emit-rtl.c | |
parent | 6ac5aa910eb2eacb716ce06825f77f96f1e8eacf (diff) | |
download | gcc-91373fe8f7f94b846d06ada9bd3766b694eebc4f.zip gcc-91373fe8f7f94b846d06ada9bd3766b694eebc4f.tar.gz gcc-91373fe8f7f94b846d06ada9bd3766b694eebc4f.tar.bz2 |
re PR middle-end/18730 (cppexp.c:1076: error: unrecognizable insn)
PR middle-end/18730
* emit-rtl.c (get_first_nonnote_insn, get_last_nonnote_insn): When
the first/last insn is a sequence, return the first/last insn of the
sequence.
From-SVN: r91742
Diffstat (limited to 'gcc/emit-rtl.c')
-rw-r--r-- | gcc/emit-rtl.c | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 6858f98..793e2df 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -2712,9 +2712,23 @@ get_last_insn_anywhere (void) rtx get_first_nonnote_insn (void) { - rtx insn; + rtx insn = first_insn; + + if (insn) + { + 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); + } + } - for (insn = first_insn; insn && NOTE_P (insn); insn = next_insn (insn)); return insn; } @@ -2724,9 +2738,24 @@ get_first_nonnote_insn (void) rtx get_last_nonnote_insn (void) { - rtx insn; + rtx insn = last_insn; + + if (insn) + { + 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); + } + } - for (insn = last_insn; insn && NOTE_P (insn); insn = previous_insn (insn)); return insn; } |