mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-25 23:41:28 +08:00
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:
parent
d74b4b0078
commit
6ea90eb710
@ -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
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user