/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
*
* @return number of found intrinsics.
*/
-FIRM_API unsigned lower_intrinsics(i_record *list, int length,
+FIRM_API size_t lower_intrinsics(i_record *list, size_t length,
int part_block_used);
/**
* @param part_block_used set to true if part_block() must be using during lowering
*/
FIRM_API ir_prog_pass_t *lower_intrinsics_pass(const char *name, i_record *list,
- int length, int part_block_used);
+ size_t length, int part_block_used);
/**
* A mapper for the integer/float absolute value: type abs(type v).
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
/** Walker environment. */
typedef struct walker_env {
pmap *c_map; /**< The intrinsic call map. */
- unsigned nr_of_intrinsics; /**< statistics */
+ size_t nr_of_intrinsics; /**< statistics */
i_instr_record **i_map; /**< The intrinsic instruction map. */
} walker_env_t;
} /* call_mapper */
/* Go through all graphs and map calls to intrinsic functions. */
-unsigned lower_intrinsics(i_record *list, int length, int part_block_used)
+size_t lower_intrinsics(i_record *list, size_t length, int part_block_used)
{
- int i, n_ops = get_irp_n_opcodes();
+ size_t i;
+ int idx, n_ops = get_irp_n_opcodes();
ir_graph *irg;
pmap *c_map = pmap_create_ex(length);
i_instr_record **i_map;
- unsigned nr_of_intrinsics = 0;
+ size_t nr_of_intrinsics = 0;
walker_env_t wenv;
/* we use the ir_op generic pointers here */
memset((void *)i_map, 0, sizeof(*i_map) * n_ops);
/* fill a map for faster search */
- for (i = length - 1; i >= 0; --i) {
+ for (i = 0; i < length; ++i) {
if (list[i].i_call.kind == INTRINSIC_CALL) {
pmap_insert(c_map, list[i].i_call.i_ent, (void *)&list[i].i_call);
} else {
wenv.c_map = c_map;
wenv.i_map = i_map;
- for (i = get_irp_n_irgs() - 1; i >= 0; --i) {
- irg = get_irp_irg(i);
+ for (idx = get_irp_n_irgs() - 1; idx >= 0; --idx) {
+ irg = get_irp_irg(idx);
if (part_block_used) {
ir_reserve_resources(irg, IR_RESOURCE_IRN_LINK | IR_RESOURCE_PHI_LIST);
typedef struct pass_t {
ir_prog_pass_t pass;
- int part_block_used;
- int length;
+ int part_block_used;
+ size_t length;
i_record list[1];
} pass_t;
*/
ir_prog_pass_t *lower_intrinsics_pass(
const char *name,
- i_record *list, int length, int part_block_used)
+ i_record *list, size_t length, int part_block_used)
{
pass_t *pass = (pass_t*)xmalloc(sizeof(*pass) + (length-1) * sizeof(pass->list[0]));