aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2016-12-07 16:41:05 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2016-12-07 16:41:05 +0000
commit8194c537463de4a5e6bd368c1c5fab2fafc40bdf (patch)
tree64d9cf5bf54f19e1906173df4958740b7415def8 /gcc
parent27e7087f51cef38da59c87e210af64f240a3ff23 (diff)
downloadgcc-8194c537463de4a5e6bd368c1c5fab2fafc40bdf.zip
gcc-8194c537463de4a5e6bd368c1c5fab2fafc40bdf.tar.gz
gcc-8194c537463de4a5e6bd368c1c5fab2fafc40bdf.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/cfgexpand.c5
-rw-r--r--gcc/emit-rtl.c12
-rw-r--r--gcc/emit-rtl.h2
4 files changed, 22 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 966af5c..1cf31bc 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index c3aca59..97dc648 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -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
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 5201bd0..9eccd68 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -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"
diff --git a/gcc/emit-rtl.h b/gcc/emit-rtl.h
index a919bf0..88ba589 100644
--- a/gcc/emit-rtl.h
+++ b/gcc/emit-rtl.h
@@ -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;