From 56b6134d8cf6c93e24bf17b7f80610029274188d Mon Sep 17 00:00:00 2001 From: janis <janis@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed, 6 Feb 2002 22:13:01 +0000 Subject: [PATCH] * loop.c (remove_constant_addition): Avoid clobbering a shared CONST expression. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@49556 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/loop.c | 13 ++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 778b0d7c6213..6b413d62b1cc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2002-02-06 Janis Johnson <janis187@us.ibm.com> + Jan Hubicka <jh@suse.cz> + + * loop.c (remove_constant_addition): Avoid clobbering a shared + CONST expression. + 2002-02-06 Ulrich Weigand <uweigand@de.ibm.com> * config.gcc (s390x-*-linux*): Add t-linux64 makefile fragment. diff --git a/gcc/loop.c b/gcc/loop.c index 0067e7490fd4..e0847a8c32f7 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -3683,8 +3683,19 @@ remove_constant_addition (x) HOST_WIDE_INT addval = 0; rtx exp = *x; + /* Avoid clobbering a shared CONST expression. */ if (GET_CODE (exp) == CONST) - exp = XEXP (exp, 0); + { + if (GET_CODE (XEXP (exp, 0)) == PLUS + && GET_CODE (XEXP (XEXP (exp, 0), 0)) == SYMBOL_REF + && GET_CODE (XEXP (XEXP (exp, 0), 1)) == CONST_INT) + { + *x = XEXP (XEXP (exp, 0), 0); + return INTVAL (XEXP (XEXP (exp, 0), 1)); + } + return 0; + } + if (GET_CODE (exp) == CONST_INT) { addval = INTVAL (exp); -- GitLab