X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fcommon%2Ffirm.c;h=feffffef3aa4a7f899bf4c445b71200eb4914537;hb=1a06a5a742509e6027ed64b8b28f95e22c00a006;hp=70ea2c89d8f7728f22fda529f89301ea0c183dc0;hpb=6bc091c26e7777b6c013684fa5aa7da62337e0b1;p=libfirm diff --git a/ir/common/firm.c b/ir/common/firm.c index 70ea2c89d..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" @@ -32,6 +37,8 @@ # 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) @@ -52,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 */ @@ -68,7 +80,7 @@ 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); @@ -83,11 +95,13 @@ init_firm(const firm_parameter_t *param) /* 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); }