+#include "ast2firm.h"
+#include "adt/error.h"
+
+#define LINKER "gcc"
+
+static int verbose;
+
+static const ir_settings_if_conv_t *if_conv_info = NULL;
+
+static void initialize_firm(void)
+{
+ be_opt_register();
+ firm_init_options(NULL, 0, NULL);
+
+ const backend_params *be_params;
+ firm_parameter_t params;
+ memset(¶ms, 0, sizeof(params));
+
+ params.size = sizeof(params);
+ params.enable_statistics = 0;
+ params.initialize_local_func = uninitialized_local_var;
+ params.cc_mask = 0;
+ params.builtin_dbg = NULL;
+
+ /* initialize backend */
+ be_params = be_init();
+ be_set_debug_retrieve(retrieve_dbg);
+ params.arch_op_settings = be_params->arch_op_settings;
+ if_conv_info = be_params->if_conv_info;
+
+ /* intialize firm itself */
+ init_firm(¶ms);
+ dbg_init(NULL, NULL, dbg_snprint);
+
+ set_opt_constant_folding(1);
+ set_opt_unreachable_code(1);
+ set_opt_control_flow_straightening(1);
+ set_opt_control_flow_weak_simplification(1);
+ set_opt_control_flow_strong_simplification(1);
+ set_opt_dead_node_elimination(1);
+ set_opt_reassociation(1);
+ set_opt_inline(1);
+ set_opt_dyn_meth_dispatch(1);
+ set_opt_normalize(1);
+ set_opt_tail_recursion(1);
+ set_opt_dead_method_elimination(1);
+ set_opt_precise_exc_context(0);
+ set_opt_loop_unrolling(0);
+ set_opt_strength_red(0);
+ set_opt_redundant_loadstore(1);
+ set_opt_fragile_ops(0);
+ set_opt_function_call(1);
+ set_opt_optimize_class_casts(0);
+ set_opt_suppress_downcast_optimization(0);
+ set_opt_remove_confirm(1);
+ set_opt_scalar_replacement(1);
+ set_opt_ldst_only_null_ptr_exceptions(1);
+ set_opt_alias_analysis(1);
+
+ dump_consts_local(1);
+}
+
+static void dump(const char *suffix)
+{
+ dump_ir_block_graph(current_ir_graph, suffix);
+}