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
This commit is contained in:
Marat Zakirov 2014-07-11 09:02:39 +00:00 committed by Marat Zakirov
parent 4bdf641875
commit d1c1cbd5c1
4 changed files with 30 additions and 3 deletions

View File

@ -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

View File

@ -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))"

View File

@ -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

View File

@ -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];
}