X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbera.h;h=1ca7f6460a875409b03b1c1609c599b42d013e2f;hb=e243eb2e9e8a9f5e57e166950a1a0a8ab25e92a9;hp=af60a82b99c98799806ad3addc9cfdfb9e8757de;hpb=48f893878b07f6e334389ff52abda5cc2adbf179;p=libfirm diff --git a/ir/be/bera.h b/ir/be/bera.h index af60a82b9..1ca7f6460 100644 --- a/ir/be/bera.h +++ b/ir/be/bera.h @@ -10,7 +10,6 @@ #include "firm_config.h" #ifdef WITH_LIBCORE -#include #include #endif @@ -18,12 +17,17 @@ #include "be.h" #include "belive.h" +#include "beirg.h" +#include "bemodule.h" + +#ifdef WITH_LIBCORE typedef struct { lc_timer_t *t_prolog; /**< timer for prolog */ lc_timer_t *t_epilog; /**< timer for epilog */ lc_timer_t *t_live; /**< timer for liveness calculation */ lc_timer_t *t_spill; /**< timer for spilling */ + lc_timer_t *t_spillslots; /**< spillslot coalescing */ lc_timer_t *t_color; /**< timer for graph coloring */ lc_timer_t *t_ifg; /**< timer for building interference graph */ lc_timer_t *t_copymin; /**< timer for copy minimization */ @@ -31,15 +35,21 @@ typedef struct { lc_timer_t *t_verify; /**< timer for verification runs */ lc_timer_t *t_other; /**< timer for remaining stuff */ } be_ra_timer_t; +#else +typedef void *be_ra_timer_t; +typedef void *lc_opt_entry_t; +#endif /* WITH_LIBCORE */ -typedef struct { -#ifdef WITH_LIBCORE - void (*register_options)(lc_opt_entry_t *grp); -#endif - be_ra_timer_t *(*allocate)(const be_irg_t *bi); +typedef struct be_ra_t { + void (*allocate)(be_irg_t *bi); /**< allocate registers on a graph */ } be_ra_t; +void be_register_allocator(const char *name, be_ra_t *allocator); +/** + * Do register allocation with currently selected register allocator + */ +void be_allocate_registers(be_irg_t *birg); /** * Check, if two values interfere.