-static void rts_map(void) {
- static const struct {
- ir_entity_ptr *ent; /**< address of the rts entity */
- i_mapper_func func; /**< mapper function. */
- } mapper[] = {
- /* integer */
- { &rts_entities[rts_abs], i_mapper_abs },
- { &rts_entities[rts_labs], i_mapper_abs },
- { &rts_entities[rts_llabs], i_mapper_abs },
- { &rts_entities[rts_imaxabs], i_mapper_abs },
-
- /* double -> double */
- { &rts_entities[rts_fabs], i_mapper_abs },
- { &rts_entities[rts_sqrt], i_mapper_sqrt },
- { &rts_entities[rts_cbrt], i_mapper_cbrt },
- { &rts_entities[rts_pow], i_mapper_pow },
- { &rts_entities[rts_exp], i_mapper_exp },
- { &rts_entities[rts_exp2], i_mapper_exp },
- { &rts_entities[rts_exp10], i_mapper_exp },
- { &rts_entities[rts_log], i_mapper_log },
- { &rts_entities[rts_log2], i_mapper_log2 },
- { &rts_entities[rts_log10], i_mapper_log10 },
- { &rts_entities[rts_sin], i_mapper_sin },
- { &rts_entities[rts_cos], i_mapper_cos },
- { &rts_entities[rts_tan], i_mapper_tan },
- { &rts_entities[rts_asin], i_mapper_asin },
- { &rts_entities[rts_acos], i_mapper_acos },
- { &rts_entities[rts_atan], i_mapper_atan },
- { &rts_entities[rts_sinh], i_mapper_sinh },
- { &rts_entities[rts_cosh], i_mapper_cosh },
- { &rts_entities[rts_tanh], i_mapper_tanh },
-
- /* float -> float */
- { &rts_entities[rts_fabsf], i_mapper_abs },
- { &rts_entities[rts_sqrtf], i_mapper_sqrt },
- { &rts_entities[rts_cbrtf], i_mapper_cbrt },
- { &rts_entities[rts_powf], i_mapper_pow },
- { &rts_entities[rts_expf], i_mapper_exp },
- { &rts_entities[rts_exp2f], i_mapper_exp },
- { &rts_entities[rts_exp10f], i_mapper_exp },
- { &rts_entities[rts_logf], i_mapper_log },
- { &rts_entities[rts_log2f], i_mapper_log2 },
- { &rts_entities[rts_log10f], i_mapper_log10 },
- { &rts_entities[rts_sinf], i_mapper_sin },
- { &rts_entities[rts_cosf], i_mapper_cos },
- { &rts_entities[rts_tanf], i_mapper_tan },
- { &rts_entities[rts_asinf], i_mapper_asin },
- { &rts_entities[rts_acosf], i_mapper_acos },
- { &rts_entities[rts_atanf], i_mapper_atan },
- { &rts_entities[rts_sinhf], i_mapper_sinh },
- { &rts_entities[rts_coshf], i_mapper_cosh },
- { &rts_entities[rts_tanhf], i_mapper_tanh },
-
- /* long double -> long double */
- { &rts_entities[rts_fabsl], i_mapper_abs },
- { &rts_entities[rts_sqrtl], i_mapper_sqrt },
- { &rts_entities[rts_cbrtl], i_mapper_cbrt },
- { &rts_entities[rts_powl], i_mapper_pow },
- { &rts_entities[rts_expl], i_mapper_exp },
- { &rts_entities[rts_exp2l], i_mapper_exp },
- { &rts_entities[rts_exp10l], i_mapper_exp },
- { &rts_entities[rts_logl], i_mapper_log },
- { &rts_entities[rts_log2l], i_mapper_log2 },
- { &rts_entities[rts_log10l], i_mapper_log10 },
- { &rts_entities[rts_sinl], i_mapper_sin },
- { &rts_entities[rts_cosl], i_mapper_cos },
- { &rts_entities[rts_tanl], i_mapper_tan },
- { &rts_entities[rts_asinl], i_mapper_asin },
- { &rts_entities[rts_acosl], i_mapper_acos },
- { &rts_entities[rts_atanl], i_mapper_atan },
- { &rts_entities[rts_sinhl], i_mapper_sinh },
- { &rts_entities[rts_coshl], i_mapper_cosh },
- { &rts_entities[rts_tanhl], i_mapper_tanh },
-
- /* string */
- { &rts_entities[rts_memcpy], i_mapper_memcpy },
- { &rts_entities[rts_memset], i_mapper_memset },
- { &rts_entities[rts_strcmp], i_mapper_strcmp },
- { &rts_entities[rts_strncmp], i_mapper_strncmp },
- { &rts_entities[rts_strlen], i_mapper_strlen }
- };
- i_record rec[sizeof(mapper)/sizeof(mapper[0])];
- unsigned i, n_map;
-
- for (i = n_map = 0; i < sizeof(mapper)/sizeof(mapper[0]); ++i)
- if (*mapper[i].ent != NULL) {
- rec[n_map].i_call.kind = INTRINSIC_CALL;
- rec[n_map].i_call.i_ent = *mapper[i].ent;
- rec[n_map].i_call.i_mapper = mapper[i].func;
- rec[n_map].i_call.ctx = NULL;
- rec[n_map].i_call.link = NULL;
- ++n_map;
- } /* if */
- if (n_map > 0)
- lower_intrinsics(rec, n_map, /* part_block_used=*/0);
-} /* rts_map */
-
-static int *irg_dump_no;
-
-static void dump_graph_count(ir_graph *const irg, const char *const suffix)
-{
- char name[64];
- snprintf(name, sizeof(name), "-%02d_%s", irg_dump_no[get_irg_idx(irg)]++, suffix);
- DUMP_ONE(1, irg, name);
-}
-
-#if 0
-static void dump_graph_cfg_count(ir_graph *const irg, const char *const suffix)
-{
- char name[64];
- snprintf(name, sizeof(name), "-%02d_%s", irg_dump_no[get_irg_idx(irg)]++, suffix);
- DUMP_ONE_CFG(1, irg, name);
-}
-#endif
-
-static void dump_all_count(const char *const suffix)
-{
- const int n_irgs = get_irp_n_irgs();
- int i;
-
- for (i = 0; i < n_irgs; ++i)
- dump_graph_count(get_irp_irg(i), suffix);
-}
-
-#define DUMP_ONE_C(cond, irg, suffix) \
- do { \
- if (cond) { \
- dump_graph_count((irg), (suffix)); \
- } \
- } while (0)
-
-#define DUMP_ONE_CFG_C(cond, irg, suffix) \
- do { \
- if (cond) { \
- dump_graph_cfg_count((irg), (suffix)); \
- } \
- } while (0)
-
-#define DUMP_ALL_C(cond, suffix) \
- do { \
- if (cond) { \
- dump_all_count((suffix)); \
- } \
- } while (0)
-
-static void remove_unused_functions(void)