From 7522048d810ba9515423b9f5bd94274296aa01ae Mon Sep 17 00:00:00 2001 From: Daniel Grund Date: Mon, 23 Jan 2006 13:42:30 +0000 Subject: [PATCH] :wq --- ir/be/bechordal_main.c | 2 +- ir/be/belistsched.h | 2 +- ir/be/bemain.c | 7 +++++-- ir/be/beraextern.c | 34 +++++++++++++++++----------------- 4 files changed, 24 insertions(+), 21 deletions(-) diff --git a/ir/be/bechordal_main.c b/ir/be/bechordal_main.c index aaf2fde3b..badec3bc4 100644 --- a/ir/be/bechordal_main.c +++ b/ir/be/bechordal_main.c @@ -80,7 +80,7 @@ void be_ra_chordal_check(be_chordal_env_t *chordal_env) { n1_reg = arch_get_irn_register(arch_env, n1); if (!arch_reg_is_allocatable(arch_env, n1, -1, n1_reg)) { DBG((dbg, 0, "Register %s assigned to %+F is not allowed\n", n1_reg->name, n1)); -// assert(0 && "Register constraint does not hold"); + assert(0 && "Register constraint does not hold"); } for (o = i+1, n2 = nodes[o]; n2; n2 = nodes[++o]) { n2_reg = arch_get_irn_register(arch_env, n2); diff --git a/ir/be/belistsched.h b/ir/be/belistsched.h index 55149c2fc..8ccf6a912 100644 --- a/ir/be/belistsched.h +++ b/ir/be/belistsched.h @@ -84,7 +84,7 @@ struct _list_sched_selector_t { * A default implementation of to_appear_in_schedule, * as required in list_sched_selector_t. */ -extern be_default_to_appear_in_schedule(void *env, const ir_node *irn); +extern int be_default_to_appear_in_schedule(void *env, const ir_node *irn); /** * A trivial selector, that just selects the first ready node. diff --git a/ir/be/bemain.c b/ir/be/bemain.c index 80983c4af..96b421b56 100644 --- a/ir/be/bemain.c +++ b/ir/be/bemain.c @@ -94,6 +94,7 @@ static const lc_opt_enum_mask_items_t dump_items[] = { /* register allocators */ static const lc_opt_enum_const_ptr_items_t ra_items[] = { { "chordal", &be_ra_chordal_allocator }, + { "external", &be_ra_external_allocator }, { NULL, NULL } }; @@ -132,15 +133,17 @@ void be_opt_register(void) { #ifdef WITH_LIBCORE int i; + lc_opt_entry_t *be_grp_ra; be_grp_root = lc_opt_get_grp(firm_opt_get_root(), "be"); + be_grp_ra = lc_opt_get_grp(be_grp_root, "ra"); lc_opt_add_table(be_grp_root, be_main_options); - /* register register allocator options */ + /* register allocator options */ for(i = 0; ra_items[i].name != NULL; ++i) { const be_ra_t *ra = ra_items[i].value; - ra->register_options(be_grp_root); + ra->register_options(be_grp_ra); } /* register isa options */ diff --git a/ir/be/beraextern.c b/ir/be/beraextern.c index b01ceaa46..debef727f 100644 --- a/ir/be/beraextern.c +++ b/ir/be/beraextern.c @@ -9,9 +9,8 @@ * The external register allocator is a program taking 2 arguments: * 1) An input file in which the cfg is defined * 2) An output file containing the essential actions performed during allocation - */ + * -#if 0 The input file format ---------------------- @@ -27,7 +26,7 @@ block ::= 'block' block-nr '{' insn* '}' . // Grundblock im cfg versehen mit e edge ::= 'cf-edge' block-nr block-nr . // Steuerflusskante src-->tgt insn ::= gen-insn // Befehl in einem block - | copy-insn + | copy-insn . gen-insn ::= 'insn' insn-nr '{' uses defs '}' . copy-insn ::= 'copy' insn-nr '{' uses defs '}' . @@ -36,23 +35,32 @@ defs ::= 'def' var-list . // Liste der definierten/verwendeten Variablen uses ::= 'use' var-list . var-list ::= var-ref - | var-ref var-list + | var-ref var-list . var-ref ::= var-nr | var-nr '<' reg-nr '>' . // reg-nr gibt register constraint an. -ident ::= non-whitespace-char* -regcount, block-nr, insn-nr, reg-nr, var-nr ::= integer +ident ::= non-whitespace-char* . +regcount, block-nr, insn-nr, reg-nr, var-nr ::= integer . The output file format ----------------------- -outputfile ::= 'actions' '{' action-list '}' -TODO +outputfile ::= action* . -#endif /* documentation of file formats */ +action ::= 'spill' loc var-nr // insert a spill spill(var-nr); + | 'reload' loc var-nr var-nr // insert a reload var-nr[1] := reload(var-nr[2]); + | 'copy' loc var-nr var-nr // insert a copy var-nr[1] := var-nr[2]; + | 'assign' var-nr reg-nr . // assign var-nr the register reg-nr + +loc ::= 'before' insn-nr + | 'after' insn-nr . + +TODO + * + * End of file format docu */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -331,14 +339,6 @@ static void ssa_destr_rastello(be_raext_env_t *raenv) { //TODO irg_block_walk_graph(irg, ssa_destr_rastello, NULL, &raenv); } -/****************************************************************************** - __ __ _ ___ __ __ - \ \ / / | | |__ \ \ \ / / - \ \ / /_ _| |_ _ ___ ___ ) | \ \ / /_ _ _ __ - \ \/ / _` | | | | |/ _ \/ __| / / \ \/ / _` | '__| - \ / (_| | | |_| | __/\__ \ / /_ \ / (_| | | - \/ \__,_|_|\__,_|\___||___/ |____| \/ \__,_|_| - *****************************************************************************/ /** * Define variables (numbers) for all SSA-values. -- 2.20.1