diff options
author | Martin Liska <mliska@suse.cz> | 2015-11-27 09:36:52 +0100 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2015-11-27 08:36:52 +0000 |
commit | ed37a6cf23d416505804b67438129856f5717c93 (patch) | |
tree | f2780a5c28eb21130241402da2d97c9f91a3adb0 /gcc | |
parent | 2ce2720078f3e6448ff26e1c4b2041a2f411aa15 (diff) | |
download | gcc-ed37a6cf23d416505804b67438129856f5717c93.zip gcc-ed37a6cf23d416505804b67438129856f5717c93.tar.gz gcc-ed37a6cf23d416505804b67438129856f5717c93.tar.bz2 |
Fix memory leaks in IPA devirt
* ipa-devirt.c (ipa_devirt): Use auto_vec instead
of a local-scope vec.
(struct final_warning_record): Use auto_vec instead
of vec.
From-SVN: r230994
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/ipa-devirt.c | 7 |
2 files changed, 10 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 41ef744..cdb47f9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2015-11-27 Martin Liska <mliska@suse.cz> + + * ipa-devirt.c (ipa_devirt): Use auto_vec instead + of a local-scope vec. + (struct final_warning_record): Use auto_vec instead + of vec. + 2015-11-27 Richard Biener <rguenther@suse.de> PR tree-optimization/68553 diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c index e74f853..1539bb9 100644 --- a/gcc/ipa-devirt.c +++ b/gcc/ipa-devirt.c @@ -2987,7 +2987,7 @@ struct decl_warn_count struct final_warning_record { gcov_type dyn_count; - vec<odr_type_warn_count> type_warnings; + auto_vec<odr_type_warn_count> type_warnings; hash_map<tree, decl_warn_count> decl_warnings; }; struct final_warning_record *final_warning_records; @@ -3609,7 +3609,6 @@ ipa_devirt (void) if (warn_suggest_final_methods || warn_suggest_final_types) { final_warning_records = new (final_warning_record); - final_warning_records->type_warnings = vNULL; final_warning_records->type_warnings.safe_grow_cleared (odr_types.length ()); free_polymorphic_call_targets_hash (); } @@ -3837,7 +3836,7 @@ ipa_devirt (void) if (warn_suggest_final_methods) { - vec<const decl_warn_count*> decl_warnings_vec = vNULL; + auto_vec<const decl_warn_count*> decl_warnings_vec; final_warning_records->decl_warnings.traverse <vec<const decl_warn_count *> *, add_decl_warning> (&decl_warnings_vec); @@ -3887,7 +3886,7 @@ ipa_devirt (void) decl, count, dyn_count); } } - + delete (final_warning_records); final_warning_records = 0; } |