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.

Reply via email to