* context.h (context::set_passes): New.
* context.c (context::context): Do not create pass manager.
* toplev.c (general_init): Create pass manager here.
From-SVN: r248268
+2017-05-19 Nathan Sidwell <nathan@acm.org>
+
+ * context.h (context::set_passes): New.
+ * context.c (context::context): Do not create pass manager.
+ * toplev.c (general_init): Create pass manager here.
+
2017-05-19 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000.md (splitter to load of -1 and mask): Don't
gcc::context *g;
gcc::context::context ()
+ : m_passes (NULL), m_dumps (new gcc::dump_manager ())
{
have_offload = false;
-
- /* The pass manager's constructor uses the dump manager (to set up
- dumps for the various passes), so the dump manager must be set up
- before the pass manager. */
- m_dumps = new gcc::dump_manager ();
- m_passes = new gcc::pass_manager (this);
}
gcc::context::~context ()
/* Pass-management. */
+ void set_passes (pass_manager *m)
+ {
+ gcc_assert (!m_passes);
+ m_passes = m;
+ }
+
pass_manager *get_passes () { gcc_assert (m_passes); return m_passes; }
/* Handling dump files. */
processing. */
init_ggc_heuristics ();
- /* Create the singleton holder for global state.
- Doing so also creates the pass manager and with it the passes. */
+ /* Create the singleton holder for global state. This creates the
+ dump manager. */
g = new gcc::context ();
+
+ /* Create the passes. */
+ g->set_passes (new gcc::pass_manager (g));
+
symtab = new (ggc_cleared_alloc <symbol_table> ()) symbol_table ();
statistics_early_init ();