void ir_init(void) { firm_init_flags(); init_ident(); init_edges(); init_tarval_1(); /* Builds a basic program representation, so modes can be added. */ init_irprog_1(); init_mode(); init_tarval_2(); firm_init_op(); firm_init_reassociation(); firm_init_funccalls(); firm_init_inline(); firm_init_scalar_replace(); /* Builds a construct allowing to access all information to be constructed later. */ init_irprog_2(); firm_init_memory_disambiguator(); firm_init_loop_opt(); arch_dep_set_opts(arch_dep_none); init_execfreq(); firm_be_init(); #ifdef DEBUG_libfirm firm_init_debugger(); #endif }
void ir_init(void) { /* for historical reasons be_init must be run first */ firm_be_init(); /* initialize firm flags */ firm_init_flags(); /* initialize all ident stuff */ init_ident(); /* Edges need hooks. */ init_edges(); /* create the type kinds. */ init_tpop(); /* create an obstack and put all tarvals in a pdeq */ init_tarval_1(0l, /* support_quad_precision */0); /* Builds a basic program representation, so modes can be added. */ init_irprog_1(); /* initialize all modes an ir node can consist of */ init_mode(); /* initialize tarvals, and floating point arithmetic */ init_tarval_2(); /* initialize node opcodes */ firm_init_op(); /* init graph construction */ firm_init_irgraph(); /* kind of obstack initialization */ firm_init_mangle(); /* initialize reassociation */ firm_init_reassociation(); /* initialize function call optimization */ firm_init_funccalls(); /* initialize function inlining */ firm_init_inline(); /* initialize scalar replacement */ firm_init_scalar_replace(); /* Builds a construct allowing to access all information to be constructed later. */ init_irprog_2(); /* memory disambiguation */ firm_init_memory_disambiguator(); firm_init_loop_opt(); /* Init architecture dependent optimizations. */ arch_dep_set_opts(arch_dep_none); init_execfreq(); init_stat(); #ifdef DEBUG_libfirm /* integrated debugger extension */ firm_init_debugger(); #endif }
int main(void) { init_ident(); init_tarval_1(); init_irprog_1(); init_mode(); init_tarval_2(); double d_nan = 0.0/0.0; assert (d_nan != d_nan); d_nan = new_nan(1234); assert (d_nan != d_nan); assert (nan_payload(d_nan) == 1234); d_nan *= 2; assert (d_nan != d_nan); ir_tarval* tv_nan = new_tarval_from_double(d_nan, mode_D); assert (tarval_is_nan(tv_nan)); d_nan = get_tarval_double(tv_nan); assert (d_nan != d_nan); assert (nan_payload(d_nan) == 1234); tv_nan = new_tarval_nan(mode_D, false, NULL); assert (tarval_is_nan(tv_nan)); d_nan = get_tarval_double(tv_nan); assert (d_nan != d_nan); d_nan = new_nan(0); assert (nan_payload(d_nan) == 0); assert (d_nan != d_nan); tv_nan = new_tarval_from_double(d_nan, mode_D); assert (tarval_is_nan(tv_nan)); d_nan = get_tarval_double(tv_nan); assert (d_nan != d_nan); assert (nan_payload(d_nan) == 0); finish_tarval(); finish_mode(); finish_ident(); return 0; }