diff options
author | Bernd Schmidt <bernds@codesourcery.com> | 2010-07-06 23:44:55 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@gcc.gnu.org> | 2010-07-06 23:44:55 +0000 |
commit | 325d79974db871a95dae0598b4435f3b60b89402 (patch) | |
tree | ed80adf1d983be206d71c3ae45f5eb3b1e8d0444 /gcc | |
parent | 604b91240e4f3a1b5c97681b575389addf3dd638 (diff) | |
download | gcc-325d79974db871a95dae0598b4435f3b60b89402.zip gcc-325d79974db871a95dae0598b4435f3b60b89402.tar.gz gcc-325d79974db871a95dae0598b4435f3b60b89402.tar.bz2 |
re PR rtl-optimization/44787 (internal compiler error: in reload_cse_simplify_operands, at postreload.c:395)
PR rtl-optimization/44787
* config/arm/arm.md (arith_shiftsi): Allow stack pointer in operand 2.
* config/arm/thumb2.md (thumb2_arith_shiftsi): Likewise.
testsuite/
PR rtl-optimization/44787
* gcc.c-torture/compile/pr44788.c: New test.
* gcc.target/arm/pr44788.c: New test.
From-SVN: r161893
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]; + } +} |