https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86529
Bug ID: 86529 Summary: [9 Regression] ICE in malloc_candidate_p, at ipa-pure-const.c:962 Product: gcc Version: 9.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: ipa Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: marxin at gcc dot gnu.org Target Milestone: --- Starting from my r261744 we ICE on: $ cat malloc.ii namespace std { class type_info { public: bool operator==(type_info); }; class c { public: c(int) {} type_info b; virtual void *d() { if (b == typeid(int)) return e(); return nullptr; } int *e() noexcept; }; class h { public: template <typename g, typename f> h(g, f j) { new c(j); } }; class k { protected: int n; k() : i(0, n) {} h i; }; class F : k { public: F(int, int) {} template <typename, typename f, typename...> friend F l(const f &); }; template <typename, typename f, typename...> F l(const f &p1) { F x(int(), p1); return x; } template <typename> F m() { l<int>(int()); return F(0, 0); } class D { F p; public: D() : p(m<int>()) {} }; } // namespace std std::D a; $ g++ malloc.ii -fipa-pure-const during IPA pass: pure-const malloc.ii: In member function ‘virtual void* std::c::d()’: malloc.ii:41:9: internal compiler error: in malloc_candidate_p, at ipa-pure-const.c:962 std::D a; ^ 0x16c5197 malloc_candidate_p /home/marxin/Programming/gcc/gcc/ipa-pure-const.c:962 0x16c5e81 analyze_function /home/marxin/Programming/gcc/gcc/ipa-pure-const.c:1095 0x16c67fc pure_const_generate_summary /home/marxin/Programming/gcc/gcc/ipa-pure-const.c:1178 0xde1ad4 execute_ipa_summary_passes(ipa_opt_pass_d*) /home/marxin/Programming/gcc/gcc/passes.c:2149 0xae5925 ipa_passes /home/marxin/Programming/gcc/gcc/cgraphunit.c:2425 0xae5925 symbol_table::compile() /home/marxin/Programming/gcc/gcc/cgraphunit.c:2536 0xae76b9 symbol_table::compile() /home/marxin/Programming/gcc/gcc/cgraphunit.c:2515 0xae76b9 symbol_table::finalize_compilation_unit() /home/marxin/Programming/gcc/gcc/cgraphunit.c:2696