X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fcommon%2Ffirm.c;h=feffffef3aa4a7f899bf4c445b71200eb4914537;hb=1a06a5a742509e6027ed64b8b28f95e22c00a006;hp=40936852f8cfc3d8d5cb7a1dfced94a8374100aa;hpb=109b367e18cda22744a532c734ecfbf6220d6c2d;p=libfirm diff --git a/ir/common/firm.c b/ir/common/firm.c index 40936852f..feffffef3 100644 --- a/ir/common/firm.c +++ b/ir/common/firm.c @@ -11,10 +11,15 @@ */ #ifdef HAVE_CONFIG_H -# include +# include "config.h" +#endif + +#ifdef HAVE_STRING_H +# include #endif # include + # include "ident_t.h" # include "firm.h" # include "mangle.h" @@ -30,6 +35,10 @@ # include "type_identify.h" # include "firmstat.h" # include "irreflect_t.h" +# include "irarch.h" +# include "reassoc_t.h" +# include "irhooks.h" +# include "iredges_t.h" void init_firm(const firm_parameter_t *param) @@ -50,10 +59,15 @@ init_firm(const firm_parameter_t *param) memcpy(&def_params, param, size); } + /* initialize all ident stuff */ init_ident(def_params.id_if, 1024); - /* enhanced statistics, need idents */ + /* initialize Firm hooks */ + init_hooks(); + /* enhanced statistics, need idents and hooks */ init_stat(def_params.enable_statistics); + /* Edges need hooks. */ + init_edges(); /* create the type kinds. */ init_tpop(); /* create an obstack and put all tarvals in a pdeq */ @@ -66,19 +80,28 @@ init_firm(const firm_parameter_t *param) init_irgraph(); /* kind of obstack initialization */ firm_init_mangle(); - /* initalize all op codes an irnode can consist of */ + /* initialize all op codes an irnode can consist of */ init_op(); /* called once for each run of this library */ init_cons(def_params.initialize_local_func); + /* initialize reassociation */ + firm_init_reassociation(); /* Builds a construct allowing to access all information to be constructed later. */ init_irprog(); /* Constructs some idents needed. */ init_type(); + init_entity(); /* allocate a hash table. */ init_type_identify(def_params.ti_if); /* Init reflection facility. */ - init_rflct(); + firm_init_rflct(); + + /* Init architecture dependent optimizations. */ + arch_dep_init(arch_dep_default_factory); + arch_dep_set_opts(arch_dep_mul_to_shift | arch_dep_div_by_const | arch_dep_mod_by_const); + + firm_archops_init(def_params.arch_op_settings); }