From 676cb929fcac50fbe3bd71de734a8f40b5b2ea10 Mon Sep 17 00:00:00 2001 From: Roger Sayle Date: Fri, 24 Feb 2006 19:29:34 +0000 Subject: [PATCH] re PR middle-end/24952 (ICE: RTL check: expected code 'set' or 'clobber', have 'unspec' in try_combine, at combine.c:2898) PR middle-end/24952 * combine.c (try_combine): Explicitly check whether GET_CODE is a SET or a CLOBBER, instead on checking that it isn't a USE. From-SVN: r111425 --- gcc/ChangeLog | 6 ++++++ gcc/combine.c | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e1ab5426b49..0fef1eab91e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-02-24 Roger Sayle + + PR middle-end/24952 + * combine.c (try_combine): Explicitly check whether GET_CODE is + a SET or a CLOBBER, instead on checking that it isn't a USE. + 2006-02-24 Roger Sayle * fold-const.c (fold_comparison): New subroutine of fold_binary diff --git a/gcc/combine.c b/gcc/combine.c index 9240b32568a..d6f107906eb 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -3123,7 +3123,8 @@ try_combine (rtx i3, rtx i2, rtx i1, int *new_direct_jump_p) if (i3_subst_into_i2) { for (i = 0; i < XVECLEN (PATTERN (i2), 0); i++) - if (GET_CODE (XVECEXP (PATTERN (i2), 0, i)) != USE + if ((GET_CODE (XVECEXP (PATTERN (i2), 0, i)) == SET + || GET_CODE (XVECEXP (PATTERN (i2), 0, i)) == CLOBBER) && REG_P (SET_DEST (XVECEXP (PATTERN (i2), 0, i))) && SET_DEST (XVECEXP (PATTERN (i2), 0, i)) != i2dest && ! find_reg_note (i2, REG_UNUSED, -- 2.30.2