https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98745
Bug ID: 98745 Summary: [11 Regression] ICE: Segmentation fault (in print_mem_ref / c_pretty_printer::primary_expression) Product: gcc Version: 11.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- g++-11.0.0-alpha20210117 snapshot (g:0f4c8f517b7954e113afb4d5c7212123c8ee2418) ICEs when compiling the following testcase w/ -fanalyzer: struct eo { eo () { a6 = new int; } ~eo () { delete a6; } void cl () { bf = 0; } int *a6; int bf; }; struct ja { ja (int *k9) : ia (k9) { } ja (ja &); bool operator!= (ja w4) { return w4.ia; } int *ia; }; struct vi { vi () { sb = new eo; } ~vi () { delete sb; } ja x6 () { return sb->a6; } vi da () { vi ns; ja qf = nullptr; while (qf != x6 ()) ns.sb->cl (); return ns; } eo *sb; }; vi fi () { return vi ().da (); } % g++-11.0.0 -fanalyzer -w -c e686urfg.cc during IPA pass: analyzer cc1plus: internal compiler error: Segmentation fault 0x10bf6ef crash_signal /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210117/work/gcc-11-20210117/gcc/toplev.c:327 0xba33f1 tree_check(tree_node*, char const*, int, char const*, tree_code) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210117/work/gcc-11-20210117/gcc/tree.h:3337 0xba33f1 c_pretty_printer::primary_expression(tree_node*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210117/work/gcc-11-20210117/gcc/c-family/c-pretty-print.c:1343 0xba46f8 print_mem_ref /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210117/work/gcc-11-20210117/gcc/c-family/c-pretty-print.c:2043 0x998d65 dump_expr /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210117/work/gcc-11-20210117/gcc/cp/error.c:2366 0x99df70 expr_to_string(tree_node*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210117/work/gcc-11-20210117/gcc/cp/error.c:3187 0x99e6bc cp_printer /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210117/work/gcc-11-20210117/gcc/cp/error.c:4355 0x1cb7a85 pp_format(pretty_printer*, text_info*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210117/work/gcc-11-20210117/gcc/pretty-print.c:1475 0x14663bb ana::evdesc::event_desc::formatted_print(char const*, ...) const /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210117/work/gcc-11-20210117/gcc/analyzer/pending-diagnostic.cc:64 0x1c43156 ana::warning_event::get_desc(bool) const /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210117/work/gcc-11-20210117/gcc/analyzer/checker-path.cc:871 0x1c42a02 ana::checker_event::prepare_for_emission(ana::checker_path*, ana::pending_diagnostic*, diagnostic_event_id_t) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210117/work/gcc-11-20210117/gcc/analyzer/checker-path.cc:145 0x1c52ef8 ana::checker_path::prepare_for_emission(ana::pending_diagnostic*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210117/work/gcc-11-20210117/gcc/analyzer/checker-path.h:506 0x1c52ef8 ana::diagnostic_manager::emit_saved_diagnostic(ana::exploded_graph const&, ana::saved_diagnostic const&, ana::exploded_path const&, gimple const*, int) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210117/work/gcc-11-20210117/gcc/analyzer/diagnostic-manager.cc:666 0x1c55550 ana::dedupe_winners::emit_best(ana::diagnostic_manager*, ana::exploded_graph const&) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210117/work/gcc-11-20210117/gcc/analyzer/diagnostic-manager.cc:567 0x1c53308 ana::diagnostic_manager::emit_saved_diagnostics(ana::exploded_graph const&) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210117/work/gcc-11-20210117/gcc/analyzer/diagnostic-manager.cc:620 0x145c7f2 ana::impl_run_checkers(ana::logger*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210117/work/gcc-11-20210117/gcc/analyzer/engine.cc:4780 0x145d606 ana::run_checkers() /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210117/work/gcc-11-20210117/gcc/analyzer/engine.cc:4837 0x144f348 execute /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20210117/work/gcc-11-20210117/gcc/analyzer/analyzer-pass.cc:87 If one runs g++ several times in a row, analyzer sometimes makes it to emit a warning on leak of '<anonymous>.vi::sb' before the ICE.