X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fcommon%2Ffirm.c;h=feffffef3aa4a7f899bf4c445b71200eb4914537;hb=1a06a5a742509e6027ed64b8b28f95e22c00a006;hp=4c52d94927ff10aa18e3a30bfd080a413d45702a;hpb=dddcc630819f338c3b45e2bc646233e6872d5bb6;p=libfirm diff --git a/ir/common/firm.c b/ir/common/firm.c index 4c52d9492..feffffef3 100644 --- a/ir/common/firm.c +++ b/ir/common/firm.c @@ -11,22 +11,34 @@ */ #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" /* init functions are not public */ # include "tv_t.h" # include "tpop_t.h" +# include "irprog_t.h" # include "irnode_t.h" # include "irmode_t.h" +# include "ircons_t.h" # include "irgraph_t.h" # include "type_t.h" # 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) @@ -47,10 +59,15 @@ init_firm(const firm_parameter_t *param) memcpy(&def_params, param, size); } + /* initialize all ident stuff */ - init_ident (1024); - /* enhanced statistics, need idents */ - init_stat(); + init_ident(def_params.id_if, 1024); + /* 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 */ @@ -62,18 +79,29 @@ init_firm(const firm_parameter_t *param) /* init graph construction */ init_irgraph(); /* kind of obstack initialization */ - init_mangle(); - /* initalize all op codes an irnode can consist of */ + firm_init_mangle(); + /* 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.compare_types_func, def_params.hash_types_func); + init_type_identify(def_params.ti_if); + /* Init reflection facility. */ + 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); }