diff --git a/gcc/ChangeLog b/gcc/ChangeLog index af8b9ef1317..5bee13ce29c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2009-09-08 Alexandre Oliva + + PR debug/41276 + PR debug/41307 + * cselib.c (cselib_expand_value_rtx_1): Don't return copy of + invalid subreg. + 2009-09-08 Alexandre Oliva * configure: Rebuilt with modified libtool.m4. diff --git a/gcc/cselib.c b/gcc/cselib.c index 8d52c519ff3..927f93cbb79 100644 --- a/gcc/cselib.c +++ b/gcc/cselib.c @@ -1165,12 +1165,12 @@ cselib_expand_value_rtx_1 (rtx orig, struct expand_value_data *evd, scopy = simplify_gen_subreg (GET_MODE (orig), subreg, GET_MODE (SUBREG_REG (orig)), SUBREG_BYTE (orig)); - if (scopy == NULL - || (GET_CODE (scopy) == SUBREG - && !REG_P (SUBREG_REG (scopy)) - && !MEM_P (SUBREG_REG (scopy)) - && (REG_P (SUBREG_REG (orig)) - || MEM_P (SUBREG_REG (orig))))) + if ((scopy == NULL + || (GET_CODE (scopy) == SUBREG + && !REG_P (SUBREG_REG (scopy)) + && !MEM_P (SUBREG_REG (scopy)))) + && (REG_P (SUBREG_REG (orig)) + || MEM_P (SUBREG_REG (orig)))) return shallow_copy_rtx (orig); return scopy; }