re PR target/38130 (__builtin_alloca (vs IRA?) testsuite failures on mingw32)

PR target/38130
	* config/i386/i386.md (allocate_stack_worker_32,
	allocate_stack_worker_64): Don't use match_dup between input and
	output operand.
	(allocate_stack): Adjust gen_stack_worker_{32,64} caller.
	* config/i386/i386.c (ix86_expand_prologue): Likewise.

From-SVN: r141965
This commit is contained in:
Jakub Jelinek 2008-11-18 13:33:38 +01:00 committed by Jakub Jelinek
parent d74b4b0078
commit 6ea90eb710
3 changed files with 21 additions and 10 deletions

View File

@ -1,3 +1,12 @@
2008-11-18 Jakub Jelinek <jakub@redhat.com>
PR target/38130
* config/i386/i386.md (allocate_stack_worker_32,
allocate_stack_worker_64): Don't use match_dup between input and
output operand.
(allocate_stack): Adjust gen_stack_worker_{32,64} caller.
* config/i386/i386.c (ix86_expand_prologue): Likewise.
2008-11-18 Kai Tietz <kai.tietz@onevision.com>
* config/i386/t-cygming (SHLIB_LINK): Make sure that $(SHLIB_MAP).def

View File

@ -7989,9 +7989,9 @@ ix86_expand_prologue (void)
emit_move_insn (eax, GEN_INT (allocate));
if (TARGET_64BIT)
insn = gen_allocate_stack_worker_64 (eax);
insn = gen_allocate_stack_worker_64 (eax, eax);
else
insn = gen_allocate_stack_worker_32 (eax);
insn = gen_allocate_stack_worker_32 (eax, eax);
insn = emit_insn (insn);
RTX_FRAME_RELATED_P (insn) = 1;
t = gen_rtx_PLUS (Pmode, stack_pointer_rtx, GEN_INT (-allocate));

View File

@ -20196,9 +20196,10 @@
(set_attr "mode" "DI")])
(define_insn "allocate_stack_worker_32"
[(set (match_operand:SI 0 "register_operand" "+a")
(unspec_volatile:SI [(match_dup 0)] UNSPECV_STACK_PROBE))
(set (reg:SI SP_REG) (minus:SI (reg:SI SP_REG) (match_dup 0)))
[(set (match_operand:SI 0 "register_operand" "=a")
(unspec_volatile:SI [(match_operand:SI 1 "register_operand" "0")]
UNSPECV_STACK_PROBE))
(set (reg:SI SP_REG) (minus:SI (reg:SI SP_REG) (match_dup 1)))
(clobber (reg:CC FLAGS_REG))]
"!TARGET_64BIT && TARGET_STACK_PROBE"
"call\t___chkstk"
@ -20206,9 +20207,10 @@
(set_attr "length" "5")])
(define_insn "allocate_stack_worker_64"
[(set (match_operand:DI 0 "register_operand" "+a")
(unspec_volatile:DI [(match_dup 0)] UNSPECV_STACK_PROBE))
(set (reg:DI SP_REG) (minus:DI (reg:DI SP_REG) (match_dup 0)))
[(set (match_operand:DI 0 "register_operand" "=a")
(unspec_volatile:DI [(match_operand:DI 1 "register_operand" "0")]
UNSPECV_STACK_PROBE))
(set (reg:DI SP_REG) (minus:DI (reg:DI SP_REG) (match_dup 1)))
(clobber (reg:DI R10_REG))
(clobber (reg:DI R11_REG))
(clobber (reg:CC FLAGS_REG))]
@ -20240,9 +20242,9 @@
{
x = copy_to_mode_reg (Pmode, operands[1]);
if (TARGET_64BIT)
x = gen_allocate_stack_worker_64 (x);
x = gen_allocate_stack_worker_64 (x, x);
else
x = gen_allocate_stack_worker_32 (x);
x = gen_allocate_stack_worker_32 (x, x);
emit_insn (x);
}