[Bug ipa/86529] New: [9 Regression] ICE in malloc_candidate_p, at ipa-pure-const.c:962

marxin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Jul 16 06:43:00 GMT 2018


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


More information about the Gcc-bugs mailing list