[Bug ipa/87957] [9 Regression] ICE tree check: expected tree that contains ‘decl minimal’ structure, have ‘identifier_node’ in warn_odr, at ipa-devirt.c:1051 since r265519

marxin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Nov 19 15:03:00 GMT 2018


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

--- Comment #5 from Martin Liška <marxin at gcc dot gnu.org> ---
With current trunk, I still see following problem:

$ cat 1.ii
enum a {} b;

$ cat 2.ii
class a {
  int *b() const;
};
int *a::b() const { return 0; }

$ g++ -flto [12].ii
1.ii:1:6: warning: type ‘a’ violates the C++ One Definition Rule [-Wodr]
    1 | enum a {} b;
      |      ^
1.ii:1:6: note: a different type is defined in another translation unit
during IPA pass: pure-const
lto1: internal compiler error: tree check: expected enumeral_type, have
record_type in free_enum_values, at ipa-devirt.c:2276
0x6de7c0 tree_check_failed(tree_node const*, char const*, int, char const*,
...)
        /home/marxin/Programming/gcc/gcc/tree.c:9657
0x6413a6 tree_check(tree_node*, char const*, int, char const*, tree_code)
        /home/marxin/Programming/gcc/gcc/tree.h:3154
0x6413a6 free_enum_values
        /home/marxin/Programming/gcc/gcc/ipa-devirt.c:2276
0xa34174 build_type_inheritance_graph()
        /home/marxin/Programming/gcc/gcc/ipa-devirt.c:2292
0xa6d852 symbol_table::remove_unreachable_nodes(_IO_FILE*)
        /home/marxin/Programming/gcc/gcc/ipa.c:310
0x7b3832 read_cgraph_and_symbols
        /home/marxin/Programming/gcc/gcc/lto/lto.c:3017
0x7b3832 lto_main()
        /home/marxin/Programming/gcc/gcc/lto/lto.c:3401


More information about the Gcc-bugs mailing list