re PR target/57018 (Miscompilation of bison 2.7.1 under "-Os -fomit-frame-pointer")
2013-04-22 Vladimir Makarov <vmakarov@redhat.com> PR target/57018 * lra-eliminations.c (mark_not_eliminable): Prevent elimination of a set sp if no stack realignment. 2013-04-22 Vladimir Makarov <vmakarov@redhat.com> PR target/57018 * gcc.target/i386/pr57018.c: New test. From-SVN: r198140
This commit is contained in:
parent
92be22dc74
commit
88a581daa7
|
@ -1,3 +1,9 @@
|
|||
2013-04-22 Vladimir Makarov <vmakarov@redhat.com>
|
||||
|
||||
PR target/57018
|
||||
* lra-eliminations.c (mark_not_eliminable): Prevent elimination of
|
||||
a set sp if no stack realignment.
|
||||
|
||||
2013-04-22 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* config.gcc (tilegx-linux): Extend extra_objs rather than
|
||||
|
|
|
@ -716,7 +716,9 @@ mark_not_eliminable (rtx x)
|
|||
ep++)
|
||||
if (ep->to_rtx == SET_DEST (x)
|
||||
&& SET_DEST (x) != hard_frame_pointer_rtx
|
||||
&& (GET_CODE (SET_SRC (x)) != PLUS
|
||||
&& (! (SUPPORTS_STACK_ALIGNMENT && stack_realign_fp
|
||||
&& REGNO (ep->to_rtx) == STACK_POINTER_REGNUM)
|
||||
|| GET_CODE (SET_SRC (x)) != PLUS
|
||||
|| XEXP (SET_SRC (x), 0) != SET_DEST (x)
|
||||
|| ! CONST_INT_P (XEXP (SET_SRC (x), 1))))
|
||||
setup_can_eliminate (ep, false);
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2013-04-22 Vladimir Makarov <vmakarov@redhat.com>
|
||||
|
||||
PR target/57018
|
||||
* gcc.target/i386/pr57018.c: New test.
|
||||
|
||||
2013-04-22 James Greenhalgh <james.greenhalgh@arm.com>
|
||||
|
||||
* gcc.target/aarch64/vrecps.c: New.
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
/* { dg-do run } */
|
||||
/* { dg-options "-Os -fomit-frame-pointer -fno-asynchronous-unwind-tables" } */
|
||||
/* { dg-additional-options "-march=i686" { target ia32 } } */
|
||||
|
||||
struct A { char a[16]; } a;
|
||||
|
||||
void __attribute__((noinline, noclone))
|
||||
foo (struct A b)
|
||||
{
|
||||
if (__builtin_memcmp (b.a, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16))
|
||||
__builtin_abort ();
|
||||
asm volatile ("" : : : "memory");
|
||||
}
|
||||
|
||||
void __attribute__((noinline, noclone))
|
||||
bar (struct A b)
|
||||
{
|
||||
foo (a);
|
||||
a = b;
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
struct A b = { "\0\1\2\3\4\5\6\7\10\11\12\13\14\15\16\17" };
|
||||
bar (b);
|
||||
if (__builtin_memcmp (a.a, b.a, 16))
|
||||
__builtin_abort ();
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue