From 98b4eefd76167019b53b30b07eade6ef269b86d7 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 26 May 2005 11:05:04 +0200 Subject: [PATCH] re PR target/21716 (ICE in reg-stack.c's swap_rtx_condition) 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. From-SVN: r100200 --- gcc/ChangeLog | 8 ++++++++ gcc/reg-stack.c | 14 +++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3dc4aef29106..016f62a619c2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2005-05-26 Jakub Jelinek + + 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-25 Roger Sayle PR middle-end/21709 diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c index 0f284ac5c53c..84dc1d9495d2 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 -- 2.47.2