From: ian Date: Tue, 6 Feb 2007 17:19:27 +0000 (+0000) Subject: * lower-subreg.c (simple_move_operand): Reject CONST. X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ab9eaa977c00fd8bf14795b62ac4b2a41e5362f0;p=thirdparty%2Fgcc.git * lower-subreg.c (simple_move_operand): Reject CONST. (resolve_clobber): Call validate_change rather than directly assigning to XEXP (pat, 0). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@121652 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f915a0217134..52a15923fedc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-02-06 Ian Lance Taylor + + * lower-subreg.c (simple_move_operand): Reject CONST. + (resolve_clobber): Call validate_change rather than directly + assigning to XEXP (pat, 0). + 2006-02-06 Paolo Bonzini * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency. diff --git a/gcc/lower-subreg.c b/gcc/lower-subreg.c index 62bfea0a1007..8d04390da936 100644 --- a/gcc/lower-subreg.c +++ b/gcc/lower-subreg.c @@ -80,7 +80,8 @@ simple_move_operand (rtx x) if (GET_CODE (x) == LABEL_REF || GET_CODE (x) == SYMBOL_REF - || GET_CODE (x) == HIGH) + || GET_CODE (x) == HIGH + || GET_CODE (x) == CONST) return false; if (MEM_P (x) @@ -832,6 +833,7 @@ resolve_clobber (rtx pat, rtx insn) rtx reg; enum machine_mode orig_mode; unsigned int words, i; + int ret; reg = XEXP (pat, 0); if (!resolve_reg_p (reg) && !resolve_subreg_p (reg)) @@ -841,7 +843,12 @@ resolve_clobber (rtx pat, rtx insn) words = GET_MODE_SIZE (orig_mode); words = (words + UNITS_PER_WORD - 1) / UNITS_PER_WORD; - XEXP (pat, 0) = simplify_gen_subreg_concatn (word_mode, reg, orig_mode, 0); + ret = validate_change (NULL_RTX, &XEXP (pat, 0), + simplify_gen_subreg_concatn (word_mode, reg, + orig_mode, 0), + 0); + gcc_assert (ret != 0); + for (i = words - 1; i > 0; --i) { rtx x;