line_maps instances such as the global line_table are GC-managed, but the htab within location_adhoc_data_map.htab is not GC-managed. Previously this was deleted manually by a call to location_adhoc_data_fini within toplev::main. However, on adding a call to forcibly_ggc_collect after the selftests, all of the htabs for the various line_tables created during the selftests start showing up as leaks in "make selftest-valgrind", e.g.: 13,536 (1,344 direct, 12,192 indirect) bytes in 12 blocks are definitely lost in loss record 1,065 of 1,086 at 0x4A081D4: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) by 0x16DB3B0: xcalloc (xmalloc.c:163) by 0x16D8D34: htab_create_typed_alloc (hashtab.c:358) by 0x16D8DBD: htab_create_alloc (hashtab.c:286) by 0x16A2CCC: linemap_init(line_maps*, unsigned int) (line-map.c:353) by 0x1685605: selftest::line_table_test::line_table_test(selftest::line_table_case const&) (input.c:1624) by 0x167D09C: selftest::test_applying_fixits_modernize_named_init(selftest::line_table_case const&) (edit-context.c:1430) by 0x1686827: selftest::for_each_line_table_case(void (*)(selftest::line_table_case const&)) (input.c:3227) by 0x167F067: selftest::edit_context_c_tests() (edit-context.c:1658) by 0x1616E67: selftest::run_tests() (selftest-run-tests.c:71) by 0xC0DB25: toplev::run_self_tests() (toplev.c:2076) by 0x618EB4: toplev::main(int, char**) (toplev.c:2153) This patch removes the manual one-time cleanup in favor of adding a destructor to class line_maps, which cleans up the non-GC-managed htab. Doing so improves "make selftest-valgrind" from: ==61118== LEAK SUMMARY: ==61118== definitely lost: 121,248 bytes in 1,515 blocks ==61118== indirectly lost: 974,344 bytes in 959 blocks ==61118== possibly lost: 0 bytes in 0 blocks ==61118== still reachable: 1,332,599 bytes in 3,684 blocks ==61118== suppressed: 0 bytes in 0 blocks to: ==57182== LEAK SUMMARY: ==57182== definitely lost: 13,840 bytes in 556 blocks ==57182== indirectly lost: 0 bytes in 0 blocks ==57182== possibly lost: 0 bytes in 0 blocks ==57182== still reachable: 1,355,703 bytes in 3,684 blocks ==57182== suppressed: 0 bytes in 0 blocks gcc/ChangeLog: * toplev.c (toplev::main): Remove call to location_adhoc_data_fini. libcpp/ChangeLog: * include/line-map.h (line_maps::~line_maps): New dtor. (location_adhoc_data_fini): Delete decl. * line-map.c (line_maps::~line_maps): New dtor. (location_adhoc_data_fini): Delete. From-SVN: r241533
| Name |
Last commit
|
Last update |
|---|---|---|
| INSTALL | Loading commit data... | |
| boehm-gc | Loading commit data... | |
| config | Loading commit data... | |
| contrib | Loading commit data... | |
| fixincludes | Loading commit data... | |
| gcc | Loading commit data... | |
| gnattools | Loading commit data... | |
| gotools | Loading commit data... | |
| include | Loading commit data... | |
| intl | Loading commit data... | |
| libada | Loading commit data... | |
| libatomic | Loading commit data... | |
| libbacktrace | Loading commit data... | |
| libcc1 | Loading commit data... | |
| libcilkrts | Loading commit data... | |
| libcpp | Loading commit data... | |
| libdecnumber | Loading commit data... | |
| libffi | Loading commit data... | |
| libgcc | Loading commit data... | |
| libgfortran | Loading commit data... | |
| libgo | Loading commit data... | |
| libgomp | Loading commit data... | |
| libiberty | Loading commit data... | |
| libitm | Loading commit data... | |
| libmpx | Loading commit data... | |
| libobjc | Loading commit data... | |
| liboffloadmic | Loading commit data... | |
| libquadmath | Loading commit data... | |
| libsanitizer | Loading commit data... | |
| libssp | Loading commit data... | |
| libstdc++-v3 | Loading commit data... | |
| libvtv | Loading commit data... | |
| lto-plugin | Loading commit data... | |
| maintainer-scripts | Loading commit data... | |
| zlib | Loading commit data... | |
| .dir-locals.el | Loading commit data... | |
| .gitattributes | Loading commit data... | |
| .gitignore | Loading commit data... | |
| ABOUT-NLS | Loading commit data... | |
| COPYING | Loading commit data... | |
| COPYING.LIB | Loading commit data... | |
| COPYING.RUNTIME | Loading commit data... | |
| COPYING3 | Loading commit data... | |
| COPYING3.LIB | Loading commit data... | |
| ChangeLog | Loading commit data... | |
| ChangeLog.jit | Loading commit data... | |
| ChangeLog.tree-ssa | Loading commit data... | |
| MAINTAINERS | Loading commit data... | |
| Makefile.def | Loading commit data... | |
| Makefile.in | Loading commit data... | |
| Makefile.tpl | Loading commit data... | |
| README | Loading commit data... | |
| compile | Loading commit data... | |
| config-ml.in | Loading commit data... | |
| config.guess | Loading commit data... | |
| config.rpath | Loading commit data... | |
| config.sub | Loading commit data... | |
| configure | Loading commit data... | |
| configure.ac | Loading commit data... | |
| depcomp | Loading commit data... | |
| install-sh | Loading commit data... | |
| libtool-ldflags | Loading commit data... | |
| libtool.m4 | Loading commit data... | |
| ltgcc.m4 | Loading commit data... | |
| ltmain.sh | Loading commit data... | |
| ltoptions.m4 | Loading commit data... | |
| ltsugar.m4 | Loading commit data... | |
| ltversion.m4 | Loading commit data... | |
| lt~obsolete.m4 | Loading commit data... | |
| missing | Loading commit data... | |
| mkdep | Loading commit data... | |
| mkinstalldirs | Loading commit data... | |
| move-if-change | Loading commit data... | |
| symlink-tree | Loading commit data... | |
| ylwrap | Loading commit data... |