mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-21 13:39:39 +08:00
re PR target/39118 (x86_64 red zone violation)
PR target/39118 * config/i386/i386.c (expand_prologue): Emit blockage at the end of function prologue when frame pointer is used to access red zone area. From-SVN: r144063
This commit is contained in:
parent
f76f0eddf7
commit
dbf9ee15b8
@ -1,3 +1,10 @@
|
||||
2009-02-10 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/39118
|
||||
* config/i386/i386.c (expand_prologue): Emit blockage at the end
|
||||
of function prologue when frame pointer is used to access
|
||||
red zone area.
|
||||
|
||||
2009-02-10 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/39127
|
||||
@ -100,8 +107,7 @@
|
||||
|
||||
2009-02-06 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to
|
||||
zero.
|
||||
* config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
|
||||
|
||||
2009-02-06 Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
@ -249,7 +255,7 @@
|
||||
|
||||
2009-02-02 Catherine Moore <clm@codesourcery.com>
|
||||
|
||||
* sde.h (SUBTARGET_ARM_SPEC): Don;t assemble -fpic code as -mabicalls.
|
||||
* sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
|
||||
|
||||
2009-02-02 Richard Sandiford <rdsandiford@googlemail.com>
|
||||
|
||||
@ -444,8 +450,7 @@
|
||||
|
||||
* regclass.c: Rename reginfo.c. Change file description.
|
||||
(FORBIDDEN_INC_DEC_CLASSES): Remove.
|
||||
(reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec):
|
||||
Remove.
|
||||
(reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
|
||||
(init_reg_sets_1): Remove code for evaluation of
|
||||
reg_class_superclasses and losing_caller_save_reg_set.
|
||||
(init_regs): Remove init_reg_autoinc.
|
||||
@ -579,8 +584,7 @@
|
||||
2009-01-28 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/38740
|
||||
* reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
|
||||
if !optimize.
|
||||
* reorg.c (gate_handle_delay_slots): Avoid dbr scheduling if !optimize.
|
||||
* config/mips/mips.c (mips_reorg): Likewise.
|
||||
|
||||
2009-01-28 Richard Guenther <rguenther@suse.de>
|
||||
|
@ -7997,6 +7997,7 @@ ix86_expand_prologue (void)
|
||||
{
|
||||
rtx insn;
|
||||
bool pic_reg_used;
|
||||
bool emit_blockage = false;
|
||||
struct ix86_frame frame;
|
||||
HOST_WIDE_INT allocate;
|
||||
|
||||
@ -8214,7 +8215,7 @@ ix86_expand_prologue (void)
|
||||
{
|
||||
if (pic_reg_used)
|
||||
emit_insn (gen_prologue_use (pic_offset_table_rtx));
|
||||
emit_insn (gen_blockage ());
|
||||
emit_blockage = true;
|
||||
}
|
||||
|
||||
if (crtl->drap_reg && !crtl->stack_realign_needed)
|
||||
@ -8227,6 +8228,18 @@ ix86_expand_prologue (void)
|
||||
insn = emit_insn (gen_rtx_SET (VOIDmode, crtl->drap_reg, x));
|
||||
}
|
||||
|
||||
/* Prevent instructions from being scheduled into register save push
|
||||
sequence when access to the redzone area is done through frame pointer.
|
||||
The offset betweeh the frame pointer and the stack pointer is calculated
|
||||
relative to the value of the stack pointer at the end of the function
|
||||
prologue, and moving instructions that access redzone area via frame
|
||||
pointer inside push sequence violates this assumption. */
|
||||
if (frame_pointer_needed && frame.red_zone_size)
|
||||
emit_blockage = true;
|
||||
|
||||
if (emit_blockage)
|
||||
emit_insn (gen_blockage ());
|
||||
|
||||
/* Emit cld instruction if stringops are used in the function. */
|
||||
if (TARGET_CLD && ix86_current_function_needs_cld)
|
||||
emit_insn (gen_cld ());
|
||||
|
Loading…
Reference in New Issue
Block a user