re PR target/51915 (ICE in output_move_double)
PR target/51915 * config/arm/arm.c (arm_count_output_move_double_insns): Call output_move_double on a copy of operands array. * gcc.target/arm/pr51915.c: New test. From-SVN: r183349
This commit is contained in:
parent
2d663cb94c
commit
4c2708c580
@ -1,3 +1,9 @@
|
||||
2012-01-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/51915
|
||||
* config/arm/arm.c (arm_count_output_move_double_insns): Call
|
||||
output_move_double on a copy of operands array.
|
||||
|
||||
2012-01-20 Cary Coutant <ccoutant@google.com>
|
||||
Dodji Seketeli <dodji@redhat.com>
|
||||
|
||||
|
@ -24664,7 +24664,12 @@ int
|
||||
arm_count_output_move_double_insns (rtx *operands)
|
||||
{
|
||||
int count;
|
||||
output_move_double (operands, false, &count);
|
||||
rtx ops[2];
|
||||
/* output_move_double may modify the operands array, so call it
|
||||
here on a copy of the array. */
|
||||
ops[0] = operands[0];
|
||||
ops[1] = operands[1];
|
||||
output_move_double (ops, false, &count);
|
||||
return count;
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
2012-01-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/51915
|
||||
* gcc.target/arm/pr51915.c: New test.
|
||||
|
||||
2012-01-20 Cary Coutant <ccoutant@google.com>
|
||||
Dodji Seketeli <dodji@redhat.com>
|
||||
|
||||
|
13
gcc/testsuite/gcc.target/arm/pr51915.c
Normal file
13
gcc/testsuite/gcc.target/arm/pr51915.c
Normal file
@ -0,0 +1,13 @@
|
||||
/* PR target/51915 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-march=armv7-a -mfloat-abi=hard -O2" } */
|
||||
|
||||
struct S { int s1; void *s2; };
|
||||
struct T { struct S t1; unsigned long long t2; };
|
||||
struct S *foo (unsigned long long);
|
||||
|
||||
struct S *
|
||||
bar (struct S *x)
|
||||
{
|
||||
return foo (((struct T *) x)->t2);
|
||||
}
|
Loading…
Reference in New Issue
Block a user