diff options
author | Martin Liska <mliska@suse.cz> | 2021-02-09 09:57:04 +0100 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2021-02-10 09:25:38 +0100 |
commit | d44f56f2b2d4f0a827ba6f08aebc715786225c6f (patch) | |
tree | 92b2979ebd7f5f45cf6e913f43812d0472a12c95 /gcc | |
parent | e1782d8ad10dc6b556e118fd25fdaff04ce54dde (diff) | |
download | gcc-d44f56f2b2d4f0a827ba6f08aebc715786225c6f.zip gcc-d44f56f2b2d4f0a827ba6f08aebc715786225c6f.tar.gz gcc-d44f56f2b2d4f0a827ba6f08aebc715786225c6f.tar.bz2 |
ICF: fix memory leak
gcc/ChangeLog:
PR ipa/99003
* ipa-icf.c (sem_item::add_reference): Fix memory leak when
a reference exists.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ipa-icf.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/ipa-icf.c b/gcc/ipa-icf.c index 435f567..687ad8d 100644 --- a/gcc/ipa-icf.c +++ b/gcc/ipa-icf.c @@ -165,8 +165,11 @@ sem_item::add_reference (ref_map *refs, unsigned index = reference_count++; bool existed; - vec<sem_item *> &v - = refs->get_or_insert (new sem_usage_pair (target, index), &existed); + sem_usage_pair *pair = new sem_usage_pair (target, index); + vec<sem_item *> &v = refs->get_or_insert (pair, &existed); + if (existed) + delete pair; + v.safe_push (this); bitmap_set_bit (target->usage_index_bitmap, index); refs_set.add (target->node); |