:wq
authorDaniel Grund <grund@cs.uni-saarland.de>
Mon, 23 Jan 2006 13:42:30 +0000 (13:42 +0000)
committerDaniel Grund <grund@cs.uni-saarland.de>
Mon, 23 Jan 2006 13:42:30 +0000 (13:42 +0000)
ir/be/bechordal_main.c
ir/be/belistsched.h
ir/be/bemain.c
ir/be/beraextern.c

index aaf2fde..badec3b 100644 (file)
@@ -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);
index 55149c2..8ccf6a9 100644 (file)
@@ -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.
index 80983c4..96b421b 100644 (file)
@@ -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 */
index b01ceaa..debef72 100644 (file)
@@ -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.