aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarat Zakirov <m.zakirov@samsung.com>2014-07-11 09:02:39 +0000
committerMarat Zakirov <mzakirov@gcc.gnu.org>2014-07-11 09:02:39 +0000
commitd1c1cbd5c11a8e6490584f4a86526503664640d1 (patch)
treec3c7d28f82fab8f86e4821027ad55ae879224f06
parent4bdf641875669a5f94a5acb2cd54100f5e52a835 (diff)
downloadgcc-d1c1cbd5c11a8e6490584f4a86526503664640d1.zip
gcc-d1c1cbd5c11a8e6490584f4a86526503664640d1.tar.gz
gcc-d1c1cbd5c11a8e6490584f4a86526503664640d1.tar.bz2
re PR target/61561 (arm gcc internal error)
gcc/ 2014-07-11 Marat Zakirov <m.zakirov@samsung.com> PR target/61561 * config/arm/arm.md (*movhi_insn_arch4): Handle stack pointer. (*movhi_bytes): Likewise. (*arm_movqi_insn): Likewise. gcc/testsuite/ 2014-07-11 Marat Zakirov <m.zakirov@samsung.com> PR target/61561 * gcc.dg/pr61561.c: New test. From-SVN: r212450
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/arm/arm.md6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr61561.c15
4 files changed, 30 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f9d02b5..87c732f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2014-07-11 Marat Zakirov <m.zakirov@samsung.com>
+
+ PR target/61561
+ * config/arm/arm.md (*movhi_insn_arch4): Handle stack pointer.
+ (*movhi_bytes): Likewise.
+ (*arm_movqi_insn): Likewise.
+
2014-07-11 Uros Bizjak <ubizjak@gmail.com>
PR target/56858
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index d6ca79a..dac7a0a 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -6286,7 +6286,7 @@
;; Pattern to recognize insn generated default case above
(define_insn "*movhi_insn_arch4"
[(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,m,r")
- (match_operand:HI 1 "general_operand" "rI,K,r,mi"))]
+ (match_operand:HI 1 "general_operand" "rIk,K,r,mi"))]
"TARGET_ARM
&& arm_arch4
&& (register_operand (operands[0], HImode)
@@ -6310,7 +6310,7 @@
(define_insn "*movhi_bytes"
[(set (match_operand:HI 0 "s_register_operand" "=r,r,r")
- (match_operand:HI 1 "arm_rhs_operand" "I,r,K"))]
+ (match_operand:HI 1 "arm_rhs_operand" "I,rk,K"))]
"TARGET_ARM"
"@
mov%?\\t%0, %1\\t%@ movhi
@@ -6425,7 +6425,7 @@
(define_insn "*arm_movqi_insn"
[(set (match_operand:QI 0 "nonimmediate_operand" "=r,r,r,l,r,l,Uu,r,m")
- (match_operand:QI 1 "general_operand" "r,r,I,Py,K,Uu,l,m,r"))]
+ (match_operand:QI 1 "general_operand" "rk,rk,I,Py,K,Uu,l,m,r"))]
"TARGET_32BIT
&& ( register_operand (operands[0], QImode)
|| register_operand (operands[1], QImode))"
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1fb313a..63b51c6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-07-11 Marat Zakirov <m.zakirov@samsung.com>
+
+ PR target/61561
+ * gcc.dg/pr61561.c: New test.
+
2014-07-10 Tom de Vries <tom@codesourcery.com>
* gcc.target/mips/fuse-caller-save.c: Add addressing=absolute to
diff --git a/gcc/testsuite/gcc.dg/pr61561.c b/gcc/testsuite/gcc.dg/pr61561.c
new file mode 100644
index 0000000..1512f20
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr61561.c
@@ -0,0 +1,15 @@
+/* PR c/61561. */
+/* { dg-do assemble } */
+/* { dg-options " -w -O2" } */
+
+int dummy (int a);
+
+char a;
+short b;
+
+void mmm (void)
+{
+ char dyn[dummy (3)];
+ a = (char)&dyn[0];
+ b = (short)&dyn[0];
+}