X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fscalar_replace.c;h=99c0a709b6d8a587aabe1a267313c50acd2f9b6e;hb=6dc7084e6820b27a75a82d03341cff0f05ba67ba;hp=ad3c7316ddd96d7ccb7ede53090d220dc51d055a;hpb=ce6161a7e42a48f7422b7babcc64d8ace18e2687;p=libfirm diff --git a/ir/opt/scalar_replace.c b/ir/opt/scalar_replace.c index ad3c7316d..99c0a709b 100644 --- a/ir/opt/scalar_replace.c +++ b/ir/opt/scalar_replace.c @@ -1,5 +1,5 @@ /* - * 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. * @@ -66,7 +66,7 @@ typedef union { */ typedef struct path_t { unsigned vnum; /**< The value number. */ - unsigned path_len; /**< The length of the access path. */ + size_t path_len; /**< The length of the access path. */ path_elem_t path[1]; /**< The path. */ } path_t; @@ -436,9 +436,10 @@ static int find_possible_replacements(ir_graph *irg) * @param sel the Sel node * @param len the length of the path so far */ -static path_t *find_path(ir_node *sel, unsigned len) +static path_t *find_path(ir_node *sel, size_t len) { - int pos, i, n; + size_t pos; + int i, n; path_t *res; ir_node *pred = get_Sel_ptr(sel); @@ -453,6 +454,7 @@ static path_t *find_path(ir_node *sel, unsigned len) } else res = find_path(pred, len); + assert(len <= res->path_len); pos = res->path_len - len; res->path[pos++].ent = get_Sel_entity(sel); @@ -506,7 +508,7 @@ static unsigned allocate_value_numbers(pset *sels, ir_entity *ent, unsigned vnum SET_VNUM(sel, key->vnum); DB((dbg, SET_LEVEL_3, " %+F represents value %u\n", sel, key->vnum)); - ARR_EXTO(ir_mode *, *modes, (int)((key->vnum + 15) & ~15)); + ARR_EXTO(ir_mode *, *modes, (key->vnum + 15) & ~15); (*modes)[key->vnum] = get_type_mode(get_entity_type(get_Sel_entity(sel)));