diff options
| author | pb <pb@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-05-15 18:13:41 +0000 |
|---|---|---|
| committer | pb <pb@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-05-15 18:13:41 +0000 |
| commit | ce8e2d2df87d233965de83f4597ffe67d7eded42 (patch) | |
| tree | 2759a0cd344f37b8376653711cfc153b3b3f086b | |
| parent | 7d0f6734e1e40b18d3f9a074257d03eeb0fce602 (diff) | |
| download | ppe42-gcc-ce8e2d2df87d233965de83f4597ffe67d7eded42.tar.gz ppe42-gcc-ce8e2d2df87d233965de83f4597ffe67d7eded42.zip | |
2003-05-15 Philip Blundell <philb@gnu.org>
PR target/10730
* config/arm/arm.c (adjacent_mem_locations): Reject offsets
involving invalid constants.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@66838 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/config/arm/arm.c | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2da0549d77b..772b5e0a50a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2003-05-15 Philip Blundell <philb@gnu.org> + + PR target/10730 + * config/arm/arm.c (adjacent_mem_locations): Reject offsets + involving invalid constants. + 2003-05-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> * pa.c (hppa_expand_prologue): Remove blockage. diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 500bd72ed7c..d776766dc7f 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -4571,6 +4571,12 @@ adjacent_mem_locations (a, b) else reg1 = REGNO (XEXP (b, 0)); + /* Don't accept any offset that will require multiple instructions to handle, + since this would cause the arith_adjacentmem pattern to output an overlong + sequence. */ + if (!const_ok_for_op (PLUS, val0) || !const_ok_for_op (PLUS, val1)) + return 0; + return (reg0 == reg1) && ((val1 - val0) == 4 || (val0 - val1) == 4); } return 0; |

