diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/reg-stack.c | 14 |
2 files changed, 17 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 73e4675..dbf8fc4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2005-05-26 Jakub Jelinek <jakub@redhat.com> + + PR target/21716 + * reg-stack.c (swap_rtx_condition): Don't crash if %ax user was not + found in the basic block and last insn in the basic block is not + INSN_P. Remove explicit unspec numbers that are no longer valid + from comments. + 2005-05-26 Paolo Bonzini <bonzini@gnu.org> * tree-vect-transform.c (vectorizable_operation): Try word_mode diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c index a49d9e9..acf5f41 100644 --- a/gcc/reg-stack.c +++ b/gcc/reg-stack.c @@ -1231,9 +1231,9 @@ swap_rtx_condition (rtx insn) pat = PATTERN (insn); } - /* See if this is, or ends in, a fnstsw, aka unspec 9. If so, we're - not doing anything with the cc value right now. We may be able to - search for one though. */ + /* See if this is, or ends in, a fnstsw. If so, we're not doing anything + with the cc value right now. We may be able to search for one + though. */ if (GET_CODE (pat) == SET && GET_CODE (SET_SRC (pat)) == UNSPEC @@ -1252,9 +1252,13 @@ swap_rtx_condition (rtx insn) return 0; } + /* We haven't found it. */ + if (insn == BB_END (current_block)) + return 0; + /* So we've found the insn using this value. If it is anything - other than sahf, aka unspec 10, or the value does not die - (meaning we'd have to search further), then we must give up. */ + other than sahf or the value does not die (meaning we'd have + to search further), then we must give up. */ pat = PATTERN (insn); if (GET_CODE (pat) != SET || GET_CODE (SET_SRC (pat)) != UNSPEC |