@@ -3676,28 +3676,62 @@ const pass_data pass_data_ipa_cp =
( TODO_dump_symtab | TODO_remove_functions ), /* todo_flags_finish */
};
+const ipa_pass_data ipa_pass_data_ipa_cp =
+{
+ true, /* has_generate_summary */
+ true, /* has_write_summary */
+ true, /* has_read_summary */
+ true, /* has_write_optimization_summary */
+ true, /* has_read_optimization_summary */
+ false, /* has_stmt_fixup */
+ 0, /* function_transform_todo_flags_start */
+ true, /* has_function_transform */
+ false /* has_variable_transform */
+};
+
class pass_ipa_cp : public ipa_opt_pass_d
{
public:
pass_ipa_cp (gcc::context *ctxt)
: ipa_opt_pass_d (pass_data_ipa_cp, ctxt,
- ipcp_generate_summary, /* generate_summary */
- ipcp_write_summary, /* write_summary */
- ipcp_read_summary, /* read_summary */
- ipa_prop_write_all_agg_replacement, /*
- write_optimization_summary */
- ipa_prop_read_all_agg_replacement, /*
- read_optimization_summary */
- NULL, /* stmt_fixup */
- 0, /* function_transform_todo_flags_start */
- ipcp_transform_function, /* function_transform */
- NULL) /* variable_transform */
+ ipa_pass_data_ipa_cp)
{}
/* opt_pass methods: */
bool gate () { return cgraph_gate_cp (); }
unsigned int execute () { return ipcp_driver (); }
+ /* ipa_opt_pass_d methods: */
+ void generate_summary (void)
+ {
+ ipcp_generate_summary ();
+ }
+
+ void write_summary (void)
+ {
+ ipcp_write_summary ();
+ }
+
+ void read_summary (void)
+ {
+ ipcp_read_summary ();
+ }
+
+ void write_optimization_summary (void)
+ {
+ ipa_prop_write_all_agg_replacement ();
+ }
+
+ void read_optimization_summary (void)
+ {
+ ipa_prop_read_all_agg_replacement ();
+ }
+
+ unsigned int function_transform (struct cgraph_node *node)
+ {
+ return ipcp_transform_function (node);
+ }
+
}; // class pass_ipa_cp
} // anon namespace
@@ -1160,26 +1160,32 @@ const pass_data pass_data_ipa_devirt =
( TODO_dump_symtab ), /* todo_flags_finish */
};
+const ipa_pass_data ipa_pass_data_ipa_devirt =
+{
+ false, /* has_generate_summary */
+ false, /* has_write_summary */
+ false, /* has_read_summary */
+ false, /* has_write_optimization_summary */
+ false, /* has_read_optimization_summary */
+ false, /* has_stmt_fixup */
+ 0, /* function_transform_todo_flags_start */
+ false, /* has_function_transform */
+ false /* has_variable_transform */
+};
+
class pass_ipa_devirt : public ipa_opt_pass_d
{
public:
pass_ipa_devirt (gcc::context *ctxt)
: ipa_opt_pass_d (pass_data_ipa_devirt, ctxt,
- NULL, /* generate_summary */
- NULL, /* write_summary */
- NULL, /* read_summary */
- NULL, /* write_optimization_summary */
- NULL, /* read_optimization_summary */
- NULL, /* stmt_fixup */
- 0, /* function_transform_todo_flags_start */
- NULL, /* function_transform */
- NULL) /* variable_transform */
+ ipa_pass_data_ipa_devirt)
{}
/* opt_pass methods: */
bool gate () { return gate_ipa_devirt (); }
unsigned int execute () { return ipa_devirt (); }
+ /* ipa_opt_pass_d methods: */
}; // class pass_ipa_devirt
} // anon namespace
@@ -2358,26 +2358,52 @@ const pass_data pass_data_ipa_inline =
( TODO_dump_symtab ), /* todo_flags_finish */
};
+const ipa_pass_data ipa_pass_data_ipa_inline =
+{
+ true, /* has_generate_summary */
+ true, /* has_write_summary */
+ true, /* has_read_summary */
+ false, /* has_write_optimization_summary */
+ false, /* has_read_optimization_summary */
+ false, /* has_stmt_fixup */
+ 0, /* function_transform_todo_flags_start */
+ true, /* has_function_transform */
+ false /* has_variable_transform */
+};
+
class pass_ipa_inline : public ipa_opt_pass_d
{
public:
pass_ipa_inline (gcc::context *ctxt)
: ipa_opt_pass_d (pass_data_ipa_inline, ctxt,
- inline_generate_summary, /* generate_summary */
- inline_write_summary, /* write_summary */
- inline_read_summary, /* read_summary */
- NULL, /* write_optimization_summary */
- NULL, /* read_optimization_summary */
- NULL, /* stmt_fixup */
- 0, /* function_transform_todo_flags_start */
- inline_transform, /* function_transform */
- NULL) /* variable_transform */
+ ipa_pass_data_ipa_inline)
{}
/* opt_pass methods: */
bool gate () { return gate_ipa_inline (); }
unsigned int execute () { return ipa_inline (); }
+ /* ipa_opt_pass_d methods: */
+ void generate_summary (void)
+ {
+ inline_generate_summary ();
+ }
+
+ void write_summary (void)
+ {
+ inline_write_summary ();
+ }
+
+ void read_summary (void)
+ {
+ inline_read_summary ();
+ }
+
+ unsigned int function_transform (struct cgraph_node *node)
+ {
+ return inline_transform (node);
+ }
+
}; // class pass_ipa_inline
} // anon namespace
@@ -729,26 +729,47 @@ const pass_data pass_data_ipa_profile =
0, /* todo_flags_finish */
};
+const ipa_pass_data ipa_pass_data_ipa_profile =
+{
+ true, /* has_generate_summary */
+ true, /* has_write_summary */
+ true, /* has_read_summary */
+ false, /* has_write_optimization_summary */
+ false, /* has_read_optimization_summary */
+ false, /* has_stmt_fixup */
+ 0, /* function_transform_todo_flags_start */
+ false, /* has_function_transform */
+ false /* has_variable_transform */
+};
+
class pass_ipa_profile : public ipa_opt_pass_d
{
public:
pass_ipa_profile (gcc::context *ctxt)
: ipa_opt_pass_d (pass_data_ipa_profile, ctxt,
- ipa_profile_generate_summary, /* generate_summary */
- ipa_profile_write_summary, /* write_summary */
- ipa_profile_read_summary, /* read_summary */
- NULL, /* write_optimization_summary */
- NULL, /* read_optimization_summary */
- NULL, /* stmt_fixup */
- 0, /* function_transform_todo_flags_start */
- NULL, /* function_transform */
- NULL) /* variable_transform */
+ ipa_pass_data_ipa_profile)
{}
/* opt_pass methods: */
bool gate () { return gate_ipa_profile (); }
unsigned int execute () { return ipa_profile (); }
+ /* ipa_opt_pass_d methods: */
+ void generate_summary (void)
+ {
+ ipa_profile_generate_summary ();
+ }
+
+ void write_summary (void)
+ {
+ ipa_profile_write_summary ();
+ }
+
+ void read_summary (void)
+ {
+ ipa_profile_read_summary ();
+ }
+
}; // class pass_ipa_profile
} // anon namespace
@@ -1517,26 +1517,47 @@ const pass_data pass_data_ipa_pure_const =
0, /* todo_flags_finish */
};
+const ipa_pass_data ipa_pass_data_ipa_pure_const =
+{
+ true, /* has_generate_summary */
+ true, /* has_write_summary */
+ true, /* has_read_summary */
+ false, /* has_write_optimization_summary */
+ false, /* has_read_optimization_summary */
+ false, /* has_stmt_fixup */
+ 0, /* function_transform_todo_flags_start */
+ false, /* has_function_transform */
+ false /* has_variable_transform */
+};
+
class pass_ipa_pure_const : public ipa_opt_pass_d
{
public:
pass_ipa_pure_const (gcc::context *ctxt)
: ipa_opt_pass_d (pass_data_ipa_pure_const, ctxt,
- pure_const_generate_summary, /* generate_summary */
- pure_const_write_summary, /* write_summary */
- pure_const_read_summary, /* read_summary */
- NULL, /* write_optimization_summary */
- NULL, /* read_optimization_summary */
- NULL, /* stmt_fixup */
- 0, /* function_transform_todo_flags_start */
- NULL, /* function_transform */
- NULL) /* variable_transform */
+ ipa_pass_data_ipa_pure_const)
{}
/* opt_pass methods: */
bool gate () { return gate_pure_const (); }
unsigned int execute () { return propagate (); }
+ /* ipa_opt_pass_d methods: */
+ void generate_summary (void)
+ {
+ pure_const_generate_summary ();
+ }
+
+ void write_summary (void)
+ {
+ pure_const_write_summary ();
+ }
+
+ void read_summary (void)
+ {
+ pure_const_read_summary ();
+ }
+
}; // class pass_ipa_pure_const
} // anon namespace
@@ -1171,28 +1171,42 @@ const pass_data pass_data_ipa_reference =
0, /* todo_flags_finish */
};
+const ipa_pass_data ipa_pass_data_ipa_reference =
+{
+ false, /* has_generate_summary */
+ false, /* has_write_summary */
+ false, /* has_read_summary */
+ true, /* has_write_optimization_summary */
+ true, /* has_read_optimization_summary */
+ false, /* has_stmt_fixup */
+ 0, /* function_transform_todo_flags_start */
+ false, /* has_function_transform */
+ false /* has_variable_transform */
+};
+
class pass_ipa_reference : public ipa_opt_pass_d
{
public:
pass_ipa_reference (gcc::context *ctxt)
: ipa_opt_pass_d (pass_data_ipa_reference, ctxt,
- NULL, /* generate_summary */
- NULL, /* write_summary */
- NULL, /* read_summary */
- ipa_reference_write_optimization_summary, /*
- write_optimization_summary */
- ipa_reference_read_optimization_summary, /*
- read_optimization_summary */
- NULL, /* stmt_fixup */
- 0, /* function_transform_todo_flags_start */
- NULL, /* function_transform */
- NULL) /* variable_transform */
- {}
+ ipa_pass_data_ipa_reference)
+ {}
/* opt_pass methods: */
bool gate () { return gate_reference (); }
unsigned int execute () { return propagate (); }
+ /* ipa_opt_pass_d methods: */
+ void write_optimization_summary (void)
+ {
+ ipa_reference_write_optimization_summary ();
+ }
+
+ void read_optimization_summary (void)
+ {
+ ipa_reference_read_optimization_summary ();
+ }
+
}; // class pass_ipa_reference
} // anon namespace
@@ -1224,20 +1224,25 @@ const pass_data pass_data_ipa_whole_program_visibility =
( TODO_remove_functions | TODO_dump_symtab ), /* todo_flags_finish */
};
+const ipa_pass_data ipa_pass_data_ipa_whole_program_visibility =
+{
+ false, /* has_generate_summary */
+ false, /* has_write_summary */
+ false, /* has_read_summary */
+ false, /* has_write_optimization_summary */
+ false, /* has_read_optimization_summary */
+ false, /* has_stmt_fixup */
+ 0, /* function_transform_todo_flags_start */
+ false, /* has_function_transform */
+ false /* has_variable_transform */
+};
+
class pass_ipa_whole_program_visibility : public ipa_opt_pass_d
{
public:
pass_ipa_whole_program_visibility (gcc::context *ctxt)
: ipa_opt_pass_d (pass_data_ipa_whole_program_visibility, ctxt,
- NULL, /* generate_summary */
- NULL, /* write_summary */
- NULL, /* read_summary */
- NULL, /* write_optimization_summary */
- NULL, /* read_optimization_summary */
- NULL, /* stmt_fixup */
- 0, /* function_transform_todo_flags_start */
- NULL, /* function_transform */
- NULL) /* variable_transform */
+ ipa_pass_data_ipa_whole_program_visibility)
{}
/* opt_pass methods: */
@@ -1248,6 +1253,7 @@ public:
return whole_program_function_and_variable_visibility ();
}
+ /* ipa_opt_pass_d methods: */
}; // class pass_ipa_whole_program_visibility
} // anon namespace
@@ -1557,26 +1563,32 @@ const pass_data pass_data_ipa_cdtor_merge =
0, /* todo_flags_finish */
};
+const ipa_pass_data ipa_pass_data_ipa_cdtor_merge =
+{
+ false, /* has_generate_summary */
+ false, /* has_write_summary */
+ false, /* has_read_summary */
+ false, /* has_write_optimization_summary */
+ false, /* has_read_optimization_summary */
+ false, /* has_stmt_fixup */
+ 0, /* function_transform_todo_flags_start */
+ false, /* has_function_transform */
+ false /* has_variable_transform */
+};
+
class pass_ipa_cdtor_merge : public ipa_opt_pass_d
{
public:
pass_ipa_cdtor_merge (gcc::context *ctxt)
: ipa_opt_pass_d (pass_data_ipa_cdtor_merge, ctxt,
- NULL, /* generate_summary */
- NULL, /* write_summary */
- NULL, /* read_summary */
- NULL, /* write_optimization_summary */
- NULL, /* read_optimization_summary */
- NULL, /* stmt_fixup */
- 0, /* function_transform_todo_flags_start */
- NULL, /* function_transform */
- NULL) /* variable_transform */
+ ipa_pass_data_ipa_cdtor_merge)
{}
/* opt_pass methods: */
bool gate () { return gate_ipa_cdtor_merge (); }
unsigned int execute () { return ipa_cdtor_merge (); }
+ /* ipa_opt_pass_d methods: */
}; // class pass_ipa_cdtor_merge
} // anon namespace
@@ -2031,25 +2031,41 @@ const pass_data pass_data_ipa_lto_gimple_out =
0, /* todo_flags_finish */
};
+const ipa_pass_data ipa_pass_data_ipa_lto_gimple_out =
+{
+ false, /* has_generate_summary */
+ true, /* has_write_summary */
+ false, /* has_read_summary */
+ true, /* has_write_optimization_summary */
+ false, /* has_read_optimization_summary */
+ false, /* has_stmt_fixup */
+ 0, /* function_transform_todo_flags_start */
+ false, /* has_function_transform */
+ false /* has_variable_transform */
+};
+
class pass_ipa_lto_gimple_out : public ipa_opt_pass_d
{
public:
pass_ipa_lto_gimple_out (gcc::context *ctxt)
: ipa_opt_pass_d (pass_data_ipa_lto_gimple_out, ctxt,
- NULL, /* generate_summary */
- lto_output, /* write_summary */
- NULL, /* read_summary */
- lto_output, /* write_optimization_summary */
- NULL, /* read_optimization_summary */
- NULL, /* stmt_fixup */
- 0, /* function_transform_todo_flags_start */
- NULL, /* function_transform */
- NULL) /* variable_transform */
+ ipa_pass_data_ipa_lto_gimple_out)
{}
/* opt_pass methods: */
bool gate () { return gate_lto_out (); }
+ /* ipa_opt_pass_d methods: */
+ void write_summary (void)
+ {
+ lto_output ();
+ }
+
+ void write_optimization_summary (void)
+ {
+ lto_output ();
+ }
+
}; // class pass_ipa_lto_gimple_out
} // anon namespace
@@ -2503,25 +2519,41 @@ const pass_data pass_data_ipa_lto_finish_out =
0, /* todo_flags_finish */
};
+const ipa_pass_data ipa_pass_data_ipa_lto_finish_out =
+{
+ false, /* has_generate_summary */
+ true, /* has_write_summary */
+ false, /* has_read_summary */
+ true, /* has_write_optimization_summary */
+ false, /* has_read_optimization_summary */
+ false, /* has_stmt_fixup */
+ 0, /* function_transform_todo_flags_start */
+ false, /* has_function_transform */
+ false /* has_variable_transform */
+};
+
class pass_ipa_lto_finish_out : public ipa_opt_pass_d
{
public:
pass_ipa_lto_finish_out (gcc::context *ctxt)
: ipa_opt_pass_d (pass_data_ipa_lto_finish_out, ctxt,
- NULL, /* generate_summary */
- produce_asm_for_decls, /* write_summary */
- NULL, /* read_summary */
- produce_asm_for_decls, /* write_optimization_summary */
- NULL, /* read_optimization_summary */
- NULL, /* stmt_fixup */
- 0, /* function_transform_todo_flags_start */
- NULL, /* function_transform */
- NULL) /* variable_transform */
+ ipa_pass_data_ipa_lto_finish_out)
{}
/* opt_pass methods: */
bool gate () { return gate_lto_out (); }
+ /* ipa_opt_pass_d methods: */
+ void write_summary (void)
+ {
+ produce_asm_for_decls ();
+ }
+
+ void write_optimization_summary (void)
+ {
+ produce_asm_for_decls ();
+ }
+
}; // class pass_ipa_lto_finish_out
} // anon namespace