Commit 77560086 by Bernd Edlinger Committed by Bernd Edlinger

i386.c (x86_64_ms_sysv_extra_clobbered_registers): Make static.

2017-06-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * config/i386/i386.c (x86_64_ms_sysv_extra_clobbered_registers): Make
        static.
        (xlogue_layout::get_stack_space_used, xlogue_layout::s_instances,
        xlogue_layout::get_instance, logue_layout::xlogue_layout,
        sp_valid_at, fp_valid_at, choose_basereg): Formatting.
        (xlogue_layout::get_stub_rtx): Make static.
        (xlogue_layout::get_stub_name): Avoid const-cast, make static.
        (xlogue_layout::compute_stub_managed_regs): Rename to...
        (xlogue_layout::count_stub_managed_regs): ...this.
        (xlogue_layout::is_stub_managed_reg): New function.
        (xlogue_layout::m_stub_names): Rename to...
        (xlogue_layout::s_stub_names): ...this, make static.
        (xlogue_layout::STUB_INDEX_OFFSET, xlogue_layout::MIN_REGS,
        xlogue_layout::MAX_REGS, xlogue_layout::MAX_EXTRA_REGS,
        xlogue_layout::VARIANT_COUNT, xlogue_layout::STUB_NAME_MAX_LEN,
        xlogue_layout::s_stub_names): Instantiate statics.
        (stub_managed_regs): Remove.
        (ix86_save_reg): Use xlogue_layout::compute_stub_managed_regs.
        (disable_call_ms2sysv_xlogues): Rename to...
        (warn_once_call_ms2sysv_xlogues): ...this, and warn only once.
        (ix86_initial_elimination_offset, ix86_expand_call): Fix call_ms2sysv
        warning logic.
        (ix86_static_chain): Make sure that ix86_static_chain_on_stack can't
        change after reload_completed.
        (ix86_can_use_return_insn_p): Use the ix86_frame data structure
        directly.
        (ix86_expand_prologue): Likewise.
        (ix86_expand_epilogue): Likewise.
        (ix86_expand_split_stack_prologue): Likewise.
        (ix86_compute_frame_layout): Remove frame parameter ...
        (TARGET_COMPUTE_FRAME_LAYOUT): ... and export it as a target hook.
        (ix86_finalize_stack_realign_flags): Call ix86_compute_frame_layout
        only if necessary.
        (ix86_init_machine_status): Don't set use_fast_prologue_epilogue_nregs.
        (ix86_frame): Move from here ...
        * config/i386/i386.h (ix86_frame): ... to here.
        (machine_function): Remove use_fast_prologue_epilogue_nregs, cache the
        complete ix86_frame data structure instead.  Remove some_ld_name.

From-SVN: r248798
parent 2ded3754
2017-06-01 Bernd Edlinger <bernd.edlinger@hotmail.de>
* config/i386/i386.c (x86_64_ms_sysv_extra_clobbered_registers): Make
static.
(xlogue_layout::get_stack_space_used, xlogue_layout::s_instances,
xlogue_layout::get_instance, logue_layout::xlogue_layout,
sp_valid_at, fp_valid_at, choose_basereg): Formatting.
(xlogue_layout::get_stub_rtx): Make static.
(xlogue_layout::get_stub_name): Avoid const-cast, make static.
(xlogue_layout::compute_stub_managed_regs): Rename to...
(xlogue_layout::count_stub_managed_regs): ...this.
(xlogue_layout::is_stub_managed_reg): New function.
(xlogue_layout::m_stub_names): Rename to...
(xlogue_layout::s_stub_names): ...this, make static.
(xlogue_layout::STUB_INDEX_OFFSET, xlogue_layout::MIN_REGS,
xlogue_layout::MAX_REGS, xlogue_layout::MAX_EXTRA_REGS,
xlogue_layout::VARIANT_COUNT, xlogue_layout::STUB_NAME_MAX_LEN,
xlogue_layout::s_stub_names): Instantiate statics.
(stub_managed_regs): Remove.
(ix86_save_reg): Use xlogue_layout::compute_stub_managed_regs.
(disable_call_ms2sysv_xlogues): Rename to...
(warn_once_call_ms2sysv_xlogues): ...this, and warn only once.
(ix86_initial_elimination_offset, ix86_expand_call): Fix call_ms2sysv
warning logic.
(ix86_static_chain): Make sure that ix86_static_chain_on_stack can't
change after reload_completed.
(ix86_can_use_return_insn_p): Use the ix86_frame data structure
directly.
(ix86_expand_prologue): Likewise.
(ix86_expand_epilogue): Likewise.
(ix86_expand_split_stack_prologue): Likewise.
(ix86_compute_frame_layout): Remove frame parameter ...
(TARGET_COMPUTE_FRAME_LAYOUT): ... and export it as a target hook.
(ix86_finalize_stack_realign_flags): Call ix86_compute_frame_layout
only if necessary.
(ix86_init_machine_status): Don't set use_fast_prologue_epilogue_nregs.
(ix86_frame): Move from here ...
* config/i386/i386.h (ix86_frame): ... to here.
(machine_function): Remove use_fast_prologue_epilogue_nregs, cache the
complete ix86_frame data structure instead. Remove some_ld_name.
2017-06-01 Pierre-Marie de Rodat <derodat@adacore.com>
* dwarf2out.c (dwarf2out_late_global_decl): Add locations for
......
......@@ -2163,10 +2163,6 @@ extern int const dbx_register_map[FIRST_PSEUDO_REGISTER];
extern int const dbx64_register_map[FIRST_PSEUDO_REGISTER];
extern int const svr4_dbx_register_map[FIRST_PSEUDO_REGISTER];
extern unsigned const x86_64_ms_sysv_extra_clobbered_registers[12];
#define NUM_X86_64_MS_CLOBBERED_REGS \
(ARRAY_SIZE (x86_64_ms_sysv_extra_clobbered_registers))
/* Before the prologue, RA is at 0(%esp). */
#define INCOMING_RETURN_ADDR_RTX \
gen_rtx_MEM (Pmode, gen_rtx_REG (Pmode, STACK_POINTER_REGNUM))
......@@ -2448,9 +2444,76 @@ enum avx_u128_state
#define FASTCALL_PREFIX '@'
#ifndef USED_FOR_TARGET
/* Structure describing stack frame layout.
Stack grows downward:
[arguments]
<- ARG_POINTER
saved pc
saved static chain if ix86_static_chain_on_stack
saved frame pointer if frame_pointer_needed
<- HARD_FRAME_POINTER
[saved regs]
<- reg_save_offset
[padding0]
<- stack_realign_offset
[saved SSE regs]
OR
[stub-saved registers for ms x64 --> sysv clobbers
<- Start of out-of-line, stub-saved/restored regs
(see libgcc/config/i386/(sav|res)ms64*.S)
[XMM6-15]
[RSI]
[RDI]
[?RBX] only if RBX is clobbered
[?RBP] only if RBP and RBX are clobbered
[?R12] only if R12 and all previous regs are clobbered
[?R13] only if R13 and all previous regs are clobbered
[?R14] only if R14 and all previous regs are clobbered
[?R15] only if R15 and all previous regs are clobbered
<- end of stub-saved/restored regs
[padding1]
]
<- outlined_save_offset
<- sse_regs_save_offset
[padding2]
| <- FRAME_POINTER
[va_arg registers] |
|
[frame] |
|
[padding2] | = to_allocate
<- STACK_POINTER
*/
struct GTY(()) ix86_frame
{
int nsseregs;
int nregs;
int va_arg_size;
int red_zone_size;
int outgoing_arguments_size;
/* The offsets relative to ARG_POINTER. */
HOST_WIDE_INT frame_pointer_offset;
HOST_WIDE_INT hard_frame_pointer_offset;
HOST_WIDE_INT stack_pointer_offset;
HOST_WIDE_INT hfp_save_offset;
HOST_WIDE_INT reg_save_offset;
HOST_WIDE_INT stack_realign_allocate_offset;
HOST_WIDE_INT stack_realign_offset;
HOST_WIDE_INT outlined_save_offset;
HOST_WIDE_INT sse_reg_save_offset;
/* When save_regs_using_mov is set, emit prologue using
move instead of push instructions. */
bool save_regs_using_mov;
};
/* Machine specific frame tracking during prologue/epilogue generation. */
#ifndef USED_FOR_TARGET
struct GTY(()) machine_frame_state
{
/* This pair tracks the currently active CFA as reg+offset. When reg
......@@ -2515,14 +2578,12 @@ enum function_type
struct GTY(()) machine_function {
struct stack_local_entry *stack_locals;
const char *some_ld_name;
int varargs_gpr_size;
int varargs_fpr_size;
int optimize_mode_switching[MAX_386_ENTITIES];
/* Number of saved registers USE_FAST_PROLOGUE_EPILOGUE
has been computed for. */
int use_fast_prologue_epilogue_nregs;
/* Cached initial frame layout for the current function. */
struct ix86_frame frame;
/* For -fsplit-stack support: A stack local which holds a pointer to
the stack arguments for a function with a variable number of
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment