https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98937
Bug ID: 98937 Summary: [11 Regression] pointer_query cache leaks Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: rguenth at gcc dot gnu.org Target Milestone: --- ==25237== 2,634,236 bytes in 1 blocks are possibly lost in loss record 9,732 of 9,737 ==25237== at 0x4C308BF: realloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==25237== by 0x1547AFC: xrealloc (xmalloc.c:179) ==25237== by 0x67CB71: reserve<unsigned int> (vec.h:290) ==25237== by 0x67CB71: reserve (vec.h:1778) ==25237== by 0x67CB71: safe_grow (vec.h:1926) ==25237== by 0x67CB71: safe_grow_cleared (vec.h:1945) ==25237== by 0x67CB71: pointer_query::put_ref(tree_node*, access_ref const&, int) (builtins.c:705) ==25237== by 0x6864DF: compute_objsize_r(tree_node*, int, access_ref*, ssa_name_limit_t&, pointer_query*) (builtins.c:5739) ==25237== by 0x68CEAD: compute_objsize(tree_node*, int, access_ref*, pointer_query*) (builtins.c:5775) ==25237== by 0xC4BFD1: maybe_warn_overflow(gimple*, tree_node*, pointer_query&, strinfo*, bool, bool) (tree-ssa-strlen.c:1952) ==25237== by 0xC5642F: handle_builtin_memset (tree-ssa-strlen.c:3687) ==25237== by 0xC5642F: strlen_check_and_optimize_call (tree-ssa-strlen.c:5178) ==25237== by 0xC5642F: check_and_optimize_stmt (tree-ssa-strlen.c:5359) ==25237== by 0xC5642F: strlen_dom_walker::before_dom_children(basic_block_def*) (tree-ssa-strlen.c:5602) ==25237== by 0x13366A4: dom_walker::walk(basic_block_def*) (domwalk.c:309) ==25237== by 0xC49ABE: (anonymous namespace)::printf_strlen_execute(function*, bool) (tree-ssa-strlen.c:5668) ==25237== by 0x9E58A3: execute_one_pass(opt_pass*) (passes.c:2567) ==25237== by 0x9E6100: execute_pass_list_1(opt_pass*) (passes.c:2656) ==25237== by 0x9E6112: execute_pass_list_1(opt_pass*) (passes.c:2657) looks like there's no DTOR for pointer_query::cache_type so strlen_dom_walker will not release the two vectors.