Introduce rtl_data::init_stack_alignment

Move this part of "expand"'s initialization of crtl into its own
method so that it can used by the RTL frontend when postprocessing
RTL dumps.

gcc/ChangeLog:
	* cfgexpand.c (pass_expand::execute): Move stack initializations
	to rtl_data::init_stack_alignment and call it.
	* emit-rtl.c (rtl_data::init_stack_alignment): New method.
	* emit-rtl.h (rtl_data::init_stack_alignment): New method.

From-SVN: r243371
This commit is contained in:
David Malcolm 2016-12-07 16:41:05 +00:00 committed by David Malcolm
parent 27e7087f51
commit 8194c53746
4 changed files with 22 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2016-12-07 David Malcolm <dmalcolm@redhat.com>
* cfgexpand.c (pass_expand::execute): Move stack initializations
to rtl_data::init_stack_alignment and call it.
* emit-rtl.c (rtl_data::init_stack_alignment): New method.
* emit-rtl.h (rtl_data::init_stack_alignment): New method.
2016-12-07 Wilco Dijkstra <wdijkstr@arm.com>
* gcc/ira.c (ira_setup_eliminable_regset): Initialize crtl->is_leaf.

View File

@ -6213,10 +6213,7 @@ pass_expand::execute (function *fun)
discover_nonconstant_array_refs ();
targetm.expand_to_rtl_hook ();
crtl->stack_alignment_needed = STACK_BOUNDARY;
crtl->max_used_stack_slot_alignment = STACK_BOUNDARY;
crtl->stack_alignment_estimated = 0;
crtl->preferred_stack_boundary = STACK_BOUNDARY;
crtl->init_stack_alignment ();
fun->cfg->max_jumptable_ents = 0;
/* Resovle the function section. Some targets, like ARM EABI rely on knowledge

View File

@ -6291,5 +6291,17 @@ need_atomic_barrier_p (enum memmodel model, bool pre)
gcc_unreachable ();
}
}
/* Initialize fields of rtl_data related to stack alignment. */
void
rtl_data::init_stack_alignment ()
{
stack_alignment_needed = STACK_BOUNDARY;
max_used_stack_slot_alignment = STACK_BOUNDARY;
stack_alignment_estimated = 0;
preferred_stack_boundary = STACK_BOUNDARY;
}
#include "gt-emit-rtl.h"

View File

@ -55,6 +55,8 @@ struct GTY(()) incoming_args {
/* Datastructures maintained for currently processed function in RTL form. */
struct GTY(()) rtl_data {
void init_stack_alignment ();
struct expr_status expr;
struct emit_status emit;
struct varasm_status varasm;