From affef0ddb225a07fa6ecfd282ee83de62df43944 Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Tue, 15 Aug 2006 12:06:16 +0000 Subject: [PATCH] Minor BugFix: - one additional path slot was copied to the set of access paths without negative behaviour [r8126] --- ir/opt/scalar_replace.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ir/opt/scalar_replace.c b/ir/opt/scalar_replace.c index 8dbae7343..7b1060f02 100644 --- a/ir/opt/scalar_replace.c +++ b/ir/opt/scalar_replace.c @@ -62,6 +62,9 @@ typedef struct _path_t { path_elem_t path[1]; /**< the path */ } path_t; +/** The size of a path in bytes */ +#define PATH_SIZE(p) (sizeof(*(p)) + sizeof((p)->path[0]) * ((p)->path_len - 1)) + typedef struct _scalars_t { entity *ent; /**< A entity for scalar replacement. */ ir_type *ent_owner; /**< The owner of this entity. */ @@ -369,7 +372,7 @@ static unsigned allocate_value_numbers(pset *sels, entity *ent, unsigned vnum, i pset_insert_ptr(sels, sel); key = find_path(sel, 0); - path = set_find(pathes, key, sizeof(*key) + sizeof(key->path[0]) * key->path_len, path_hash(key)); + path = set_find(pathes, key, PATH_SIZE(key), path_hash(key)); if (path) SET_VNUM(sel, path->vnum); @@ -378,7 +381,7 @@ static unsigned allocate_value_numbers(pset *sels, entity *ent, unsigned vnum, i key->vnum = vnum++; - set_insert(pathes, key, sizeof(*key) + sizeof(key->path[0]) * key->path_len, path_hash(key)); + set_insert(pathes, key, PATH_SIZE(key), path_hash(key)); SET_VNUM(sel, key->vnum); ARR_EXTO(ir_mode *, *modes, (key->vnum + 15) & ~15); @@ -390,7 +393,7 @@ static unsigned allocate_value_numbers(pset *sels, entity *ent, unsigned vnum, i #ifdef DEBUG_libfirm /* Debug output */ if (get_opt_scalar_replacement_verbose() && get_firm_verbosity() > 1) { - printf(" %s", get_entity_name(ent)); + printf(" %s", get_entity_name(key->path[0].ent)); for (i = 1; i < key->path_len; ++i) { if (is_entity(key->path[i].ent)) printf(".%s", get_entity_name(key->path[i].ent)); -- 2.20.1