re PR target/30120 (silent miscompilation of argument passing)
PR target/30120 * reg-stack.c (convert_regs_entry): Mark current argument passing registers as live. * config/i386/i386.h (X87_REGPARM_MAX): Set to 0 to disable passing of float arguments in x87 registers. testsuite/ChangeLog: * gcc.target/i386/x87regparm-1.c: XFAIL. * gcc.target/i386/x87regparm-2.c: XFAIL. * gcc.target/i386/x87regparm-3.c: XFAIL. * gcc.target/i386/x87regparm-4.c: XFAIL. From-SVN: r119663
This commit is contained in:
parent
4efc447f98
commit
4280a3e362
@ -1,3 +1,12 @@
|
||||
2006-12-08 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/30120
|
||||
* reg-stack.c (convert_regs_entry): Mark current argument passing
|
||||
registers as live.
|
||||
|
||||
* config/i386/i386.h (X87_REGPARM_MAX): Set to 0 to disable passing
|
||||
of float arguments in x87 registers.
|
||||
|
||||
2006-12-08 John David Anglin <dave.anglin.@nrc-cnrc.gc.ca>
|
||||
|
||||
* pa.h (LEGITIMATE_CONSTANT_P): Simplify.
|
||||
|
@ -1778,7 +1778,9 @@ do { \
|
||||
|
||||
#define REGPARM_MAX (TARGET_64BIT ? 6 : 3)
|
||||
|
||||
#define X87_REGPARM_MAX 3
|
||||
/* ??? Currently disabled, as reg-stack.c does not know how to
|
||||
rearrange input registers if some arguments are left unused. */
|
||||
#define X87_REGPARM_MAX 0
|
||||
|
||||
#define SSE_REGPARM_MAX (TARGET_64BIT ? 8 : (TARGET_SSE ? 3 : 0))
|
||||
|
||||
|
@ -2595,7 +2595,8 @@ convert_regs_entry (void)
|
||||
int reg, top = -1;
|
||||
|
||||
for (reg = LAST_STACK_REG; reg >= FIRST_STACK_REG; --reg)
|
||||
if (TEST_HARD_REG_BIT (bi->stack_in.reg_set, reg))
|
||||
if (TEST_HARD_REG_BIT (bi->stack_in.reg_set, reg)
|
||||
|| TEST_HARD_REG_BIT (incoming_regs, reg))
|
||||
{
|
||||
rtx init;
|
||||
|
||||
|
@ -1,3 +1,10 @@
|
||||
2006-12-08 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
* gcc.target/i386/x87regparm-1.c: XFAIL.
|
||||
* gcc.target/i386/x87regparm-2.c: XFAIL.
|
||||
* gcc.target/i386/x87regparm-3.c: XFAIL.
|
||||
* gcc.target/i386/x87regparm-4.c: XFAIL.
|
||||
|
||||
2006-12-08 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
|
||||
|
||||
* lib/target-supports.exp
|
||||
|
@ -19,4 +19,4 @@ void test()
|
||||
|
||||
/* Check that no memory is used to pass arguments. */
|
||||
|
||||
/* { dg-final { scan-assembler-not "\\(%esp\\)" } } */
|
||||
/* { dg-final { scan-assembler-not "\\(%esp\\)" { xfail *-*-* } } } */
|
||||
|
@ -19,4 +19,4 @@ void test()
|
||||
|
||||
/* Check that no memory is used to pass arguments. */
|
||||
|
||||
/* { dg-final { scan-assembler-not "\\(%esp\\)" } } */
|
||||
/* { dg-final { scan-assembler-not "\\(%esp\\)" { xfail *-*-* } } } */
|
||||
|
@ -19,4 +19,4 @@ void test()
|
||||
|
||||
/* Check that float and double arguments are passed through memory. */
|
||||
|
||||
/* { dg-final { scan-assembler-times "\\(%esp\\)" 4 } } */
|
||||
/* { dg-final { scan-assembler-times "\\(%esp\\)" 4 { xfail *-*-* } } } */
|
||||
|
@ -19,4 +19,4 @@ void test()
|
||||
|
||||
/* Check that no memory is used to pass arguments. */
|
||||
|
||||
/* { dg-final { scan-assembler-not "\\(%esp\\)" } } */
|
||||
/* { dg-final { scan-assembler-not "\\(%esp\\)" { xfail *-*-* } } } */
|
||||
|
Loading…
Reference in New Issue
Block a user