#include "bearch.h"
#include "firm/bearch_firm.h"
#include "ia32/bearch_ia32.h"
+#include "arm/bearch_arm.h"
+#include "ppc32/bearch_ppc32.h"
+#include "mips/bearch_mips.h"
#include "be_t.h"
#include "benumb_t.h"
#include "beabi.h"
#include "belower.h"
-#define DUMP_INITIAL (1 << 0)
-#define DUMP_ABI (1 << 1)
-#define DUMP_SCHED (1 << 2)
-#define DUMP_PREPARED (1 << 3)
-#define DUMP_RA (1 << 4)
-#define DUMP_FINAL (1 << 5)
+#define DUMP_INITIAL (1 << 0)
+#define DUMP_ABI (1 << 1)
+#define DUMP_SCHED (1 << 2)
+#define DUMP_PREPARED (1 << 3)
+#define DUMP_RA (1 << 4)
+#define DUMP_FINAL (1 << 5)
/* options visible for anyone */
static be_options_t be_options = {
static const lc_opt_enum_const_ptr_items_t isa_items[] = {
{ "firm", &firm_isa },
{ "ia32", &ia32_isa_if },
+ { "arm", &arm_isa_if },
+ { "ppc", &ppc32_isa_if },
+ { "mips", &mips_isa_if },
{ NULL, NULL }
};
{
memset(env, 0, sizeof(*env));
obstack_init(&env->obst);
- env->dbg = firm_dbg_register("be.main");
env->arch_env = obstack_alloc(&env->obst, sizeof(env->arch_env[0]));
env->options = &be_options;
+ FIRM_DBG_REGISTER(env->dbg, "be.main");
arch_env_init(env->arch_env, isa_if);
* Note that this requires disabling the edges here.
*/
edges_deactivate(irg);
- dead_node_elimination(irg);
+ //dead_node_elimination(irg);
edges_activate(irg);
/* Compute loop nesting information (for weighting copies) */
dump(DUMP_PREPARED, irg, "-prepared", dump_ir_block_graph);
/* add Keeps for should_be_different constrained nodes */
- // assure_constraints(&birg);
+ assure_constraints(&birg);
dump(DUMP_PREPARED, irg, "-assured", dump_ir_block_graph);
/* Schedule the graphs. */
arch_code_generator_done(birg.cg);
dump(DUMP_FINAL, irg, "-end", dump_ir_block_graph_sched);
be_abi_free(birg.abi);
+
+ free_ir_graph(irg);
}
be_done_env(&env);