diff options
author | amodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-05-04 00:11:32 +0000 |
---|---|---|
committer | amodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-05-04 00:11:32 +0000 |
commit | 2d1861f52c893d6f4422160cd5d596a5d18cc732 (patch) | |
tree | 9fa15ef0c727e87fda693b64ffd578e0e16ffdff | |
parent | b461b04a8238ee3e1661704045707c8926b7053b (diff) | |
download | gcc-2d1861f52c893d6f4422160cd5d596a5d18cc732.tar.gz |
Combine simplify_set WORD_REGISTER_OPERATIONS
The comment says this test is supposed to prevent "a narrower
operation than requested", but it actually only allows a larger
subreg not one the same size. Fix that.
* combine.c (simplify_set): Correct WORD_REGISTER_OPERATIONS test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235852 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/combine.c | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 79fb0f48598..77d81cc5719 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2016-05-04 Alan Modra <amodra@gmail.com> + * combine.c (simplify_set): Correct WORD_REGISTER_OPERATIONS test. + +2016-05-04 Alan Modra <amodra@gmail.com> + PR target/70866 * config/rs6000/rs6000.c (rs6000_stack_info): Don't set cr_save_p when cr2,3,4 are all fixed regs. diff --git a/gcc/combine.c b/gcc/combine.c index 0ab3f97db69..3554f515582 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -6736,7 +6736,7 @@ simplify_set (rtx x) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD)) && (WORD_REGISTER_OPERATIONS || (GET_MODE_SIZE (GET_MODE (src)) - < GET_MODE_SIZE (GET_MODE (SUBREG_REG (src))))) + <= GET_MODE_SIZE (GET_MODE (SUBREG_REG (src))))) #ifdef CANNOT_CHANGE_MODE_CLASS && ! (REG_P (dest) && REGNO (dest) < FIRST_PSEUDO_REGISTER && REG_CANNOT_CHANGE_MODE_P (REGNO (dest), |