https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87089

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P1

--- Comment #8 from Martin Liška <marxin at gcc dot gnu.org> ---
It's still present for the following test-case:

$ cat 1.ii
namespace itpp {
template <class a> void b(a *c) { c[0].~a(); }
class CFix;
template <class> class d {
  void e(const char *);
  CFix *data;
};
class CFix {
public:
  virtual ~CFix();
};
template <> void d<int>::e(const char *) { b(data); }
} // namespace itpp

$ cat 2.ii
namespace itpp {
enum a { b };
class CFix {
public:
  virtual ~CFix();
};
template <a = b> class c : CFix {
  ~c() {}
};
template class c<>;
} // namespace itpp

$ g++ -flto 1.ii 2.ii -shared -fPIC -O2
during IPA pass: devirt
lto1: internal compiler error: tree check: expected class ‘type’, have
‘declaration’ (namespace_decl) in type_with_linkage_p, at ipa-utils.h:185
0x6c7d51 tree_class_check_failed(tree_node const*, tree_code_class, char
const*, int, char const*)
        /home/marxin/Programming/gcc/gcc/tree.c:9856
0xa3a7fd tree_class_check(tree_node const*, tree_code_class, char const*, int,
char const*)
        /home/marxin/Programming/gcc/gcc/tree.h:3555
0xa3a7fd type_with_linkage_p(tree_node const*)
        /home/marxin/Programming/gcc/gcc/ipa-utils.h:185
0xa3a7fd type_in_anonymous_namespace_p(tree_node const*)
        /home/marxin/Programming/gcc/gcc/ipa-utils.h:221
0xa311ba maybe_record_node
        /home/marxin/Programming/gcc/gcc/ipa-devirt.c:2531
0xa31c7c record_target_from_binfo
        /home/marxin/Programming/gcc/gcc/ipa-devirt.c:2675
0xa31b4a record_target_from_binfo
        /home/marxin/Programming/gcc/gcc/ipa-devirt.c:2687
0xa31fbd possible_polymorphic_call_targets_1
        /home/marxin/Programming/gcc/gcc/ipa-devirt.c:2730
0xa37794 possible_polymorphic_call_targets(tree_node*, long,
ipa_polymorphic_call_context, bool*, void**, bool)
        /home/marxin/Programming/gcc/gcc/ipa-devirt.c:3351
0xa39559 possible_polymorphic_call_targets(cgraph_edge*, bool*, void**, bool)
        /home/marxin/Programming/gcc/gcc/ipa-utils.h:118
0xa39559 ipa_devirt
        /home/marxin/Programming/gcc/gcc/ipa-devirt.c:3770
0xa39559 execute
        /home/marxin/Programming/gcc/gcc/ipa-devirt.c:4088

Reply via email to