diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/arm/arm.md | 2 | ||||
-rw-r--r-- | gcc/config/arm/thumb2.md | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr44788.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/pr44788.c | 12 |
6 files changed, 34 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 65b7883..6d32d9a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-07-07 Bernd Schmidt <bernds@codesourcery.com> + + PR rtl-optimization/44787 + * config/arm/arm.md (arith_shiftsi): Allow stack pointer in operand 2. + * config/arm/thumb2.md (thumb2_arith_shiftsi): Likewise. + 2010-07-06 Jan Hubicka <jh@suse.cz> * lto-symtab.c (lto_cgraph_replace_node): Handle aliases. diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 90cf2c6..f36a56c 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -9122,7 +9122,7 @@ [(match_operator:SI 3 "shift_operator" [(match_operand:SI 4 "s_register_operand" "r") (match_operand:SI 5 "reg_or_int_operand" "rI")]) - (match_operand:SI 2 "s_register_operand" "r")]))] + (match_operand:SI 2 "s_register_operand" "rk")]))] "TARGET_ARM" "%i1%?\\t%0, %2, %4%S3" [(set_attr "predicable" "yes") diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md index ac275ad..2e03b8d 100644 --- a/gcc/config/arm/thumb2.md +++ b/gcc/config/arm/thumb2.md @@ -467,7 +467,7 @@ [(match_operator:SI 3 "shift_operator" [(match_operand:SI 4 "s_register_operand" "r") (match_operand:SI 5 "const_int_operand" "M")]) - (match_operand:SI 2 "s_register_operand" "r")]))] + (match_operand:SI 2 "s_register_operand" "rk")]))] "TARGET_THUMB2" "%i1%?\\t%0, %2, %4%S3" [(set_attr "predicable" "yes") diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d1211c8..ccb722d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2010-07-07 Bernd Schmidt <bernds@codesourcery.com> + + PR rtl-optimization/44787 + * gcc.c-torture/compile/pr44788.c: New test. + * gcc.target/arm/pr44788.c: New test. + 2010-07-06 Peter Bergner <bergner@vnet.ibm.com> * gcc.target/powerpc/altivec-volatile.c: Adjust expected warning. diff --git a/gcc/testsuite/gcc.c-torture/compile/pr44788.c b/gcc/testsuite/gcc.c-torture/compile/pr44788.c new file mode 100644 index 0000000..99dc798 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr44788.c @@ -0,0 +1,8 @@ +void joint_decode(float* mlt_buffer1, int t) { + int i; + float decode_buffer[1060]; + foo(decode_buffer); + for (i=0; i<10 ; i++) { + mlt_buffer1[i] = i * decode_buffer[t]; + } +} diff --git a/gcc/testsuite/gcc.target/arm/pr44788.c b/gcc/testsuite/gcc.target/arm/pr44788.c new file mode 100644 index 0000000..eb4bc11 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/pr44788.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target arm_thumb2_ok } */ +/* { dg-options "-Os -fno-strict-aliasing -fPIC -mthumb -march=armv7-a -mfpu=vfp3 -mfloat-abi=softfp" } */ + +void joint_decode(float* mlt_buffer1, int t) { + int i; + float decode_buffer[1060]; + foo(decode_buffer); + for (i=0; i<10 ; i++) { + mlt_buffer1[i] = i * decode_buffer[t]; + } +} |