projects
/
libfirm
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
4abe989
)
ev. removed mem leak: overwrites array allocated for all ents, freed only if owner...
author
Götz Lindenmaier
<goetz@ipd.info.uni-karlsruhe.de>
Wed, 19 May 2004 09:01:52 +0000
(09:01 +0000)
committer
Götz Lindenmaier
<goetz@ipd.info.uni-karlsruhe.de>
Wed, 19 May 2004 09:01:52 +0000
(09:01 +0000)
[r2923]
ir/tr/entity.c
patch
|
blob
|
history
diff --git
a/ir/tr/entity.c
b/ir/tr/entity.c
index
09b6196
..
457e1a5
100644
(file)
--- a/
ir/tr/entity.c
+++ b/
ir/tr/entity.c
@@
-96,9
+96,13
@@
new_entity (type *owner, ident *name, type *type)
res->peculiarity = peculiarity_existent;
res->volatility = volatility_non_volatile;
res->ld_name = NULL;
res->peculiarity = peculiarity_existent;
res->volatility = volatility_non_volatile;
res->ld_name = NULL;
- res->overwrites = NEW_ARR_F(entity *, 0);
- res->overwrittenby = NEW_ARR_F(entity *, 0);
-
+ if (is_class_type(owner)) {
+ res->overwrites = NEW_ARR_F(entity *, 0);
+ res->overwrittenby = NEW_ARR_F(entity *, 0);
+ } else {
+ res->overwrites = NULL;
+ res->overwrittenby = NULL;
+ }
res->irg = NULL;
#ifdef DEBUG_libfirm
res->irg = NULL;
#ifdef DEBUG_libfirm
@@
-156,19
+160,8
@@
copy_entity_own (entity *old, type *new_owner) {
new = (entity *) xmalloc (sizeof (entity));
memcpy (new, old, sizeof (entity));
new->owner = new_owner;
new = (entity *) xmalloc (sizeof (entity));
memcpy (new, old, sizeof (entity));
new->owner = new_owner;
- /*
- if ((get_type_tpop(get_entity_owner(old)) == type_class) &&
- (get_type_tpop(new_owner) == type_class)) {
- new->overwrites = DUP_ARR_F(entity *, old->overwrites);
- new->overwrittenby = DUP_ARR_F(entity *, old->overwrittenby);
- } else if ((get_type_tpop(get_entity_owner(old)) != type_class) &&
- (get_type_tpop(new_owner) == type_class)) {
- new->overwrites = NEW_ARR_F(entity *, 0);
- new->overwrittenby = NEW_ARR_F(entity *, 0);
- }
- */
if (is_class_type(new_owner)) {
if (is_class_type(new_owner)) {
- new->overwrites = NEW_ARR_F(entity *, 0);
+ new->overwrites
= NEW_ARR_F(entity *, 0);
new->overwrittenby = NEW_ARR_F(entity *, 0);
}
#ifdef DEBUG_libfirm
new->overwrittenby = NEW_ARR_F(entity *, 0);
}
#ifdef DEBUG_libfirm
@@
-190,7
+183,7
@@
copy_entity_name (entity *old, ident *new_name) {
new->name = new_name;
new->ld_name = NULL;
if (is_class_type(new->owner)) {
new->name = new_name;
new->ld_name = NULL;
if (is_class_type(new->owner)) {
- new->overwrites = DUP_ARR_F(entity *, old->overwrites);
+ new->overwrites
= DUP_ARR_F(entity *, old->overwrites);
new->overwrittenby = DUP_ARR_F(entity *, old->overwrittenby);
}
#ifdef DEBUG_libfirm
new->overwrittenby = DUP_ARR_F(entity *, old->overwrittenby);
}
#ifdef DEBUG_libfirm
@@
-754,7
+747,7
@@
remove_entity_overwrites(entity *ent, entity *overwritten) {
for (i = 0; i < (ARR_LEN (ent->overwrites)); i++)
if (ent->overwrites[i] == overwritten) {
for(; i < (ARR_LEN (ent->overwrites))-1; i++)
for (i = 0; i < (ARR_LEN (ent->overwrites)); i++)
if (ent->overwrites[i] == overwritten) {
for(; i < (ARR_LEN (ent->overwrites))-1; i++)
- ent->overwrites[i] = ent->overwrites[i+1];
+
ent->overwrites[i] = ent->overwrites[i+1];
ARR_SETLEN(entity*, ent->overwrites, ARR_LEN(ent->overwrites) - 1);
break;
}
ARR_SETLEN(entity*, ent->overwrites, ARR_LEN(ent->overwrites) - 1);
break;
}
@@
-806,7
+799,7
@@
void remove_entity_overwrittenby(entity *ent, entity *overwrites) {
for (i = 0; i < (ARR_LEN (ent->overwrittenby)); i++)
if (ent->overwrittenby[i] == overwrites) {
for(; i < (ARR_LEN (ent->overwrittenby))-1; i++)
for (i = 0; i < (ARR_LEN (ent->overwrittenby)); i++)
if (ent->overwrittenby[i] == overwrites) {
for(; i < (ARR_LEN (ent->overwrittenby))-1; i++)
- ent->overwrittenby[i] = ent->overwrittenby[i+1];
+
ent->overwrittenby[i] = ent->overwrittenby[i+1];
ARR_SETLEN(entity*, ent->overwrittenby, ARR_LEN(ent->overwrittenby) - 1);
break;
}
ARR_SETLEN(entity*, ent->overwrittenby, ARR_LEN(ent->overwrittenby) - 1);
break;
}