http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58311
Bug ID: 58311 Summary: [4.9 Regression] ICE: SIGSEGV in hash_table::find_slot_with_hash() with -fdevirtualize Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: zsojka at seznam dot cz Created attachment 30745 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30745&action=edit reduced testcase Compiler output: $ gcc -fdevirtualize testcase.C testcase.C:14:1: internal compiler error: Segmentation fault } ^ 0xc1423f crash_signal /mnt/svn/gcc-trunk/gcc/toplev.c:335 0xa47b91 hash_table<odr_hasher, xcallocator>::find_slot_with_hash(tree_node const*, unsigned int, insert_option) /mnt/svn/gcc-trunk/gcc/hash-table.h:774 0xa463ad get_odr_type(tree_node*, bool) /mnt/svn/gcc-trunk/gcc/ipa-devirt.c:251 0xa46cb4 possible_polymorphic_call_targets(tree_node*, long, bool*, void**) /mnt/svn/gcc-trunk/gcc/ipa-devirt.c:596 0xa47263 possible_polymorphic_call_targets /mnt/svn/gcc-trunk/gcc/ipa-utils.h:87 0xa47263 ipa_devirt /mnt/svn/gcc-trunk/gcc/ipa-devirt.c:790 0xa47263 execute /mnt/svn/gcc-trunk/gcc/ipa-devirt.c:985 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions. ==7675== Invalid read of size 8 ==7675== at 0xA47B91: hash_table<odr_hasher, xcallocator>::find_slot_with_hash(tree_node const*, unsigned int, insert_option) (hash-table.h:774) ==7675== by 0xA463AD: get_odr_type(tree_node*, bool) (ipa-devirt.c:251) ==7675== by 0xA46CB4: possible_polymorphic_call_targets(tree_node*, long, bool*, void**) (ipa-devirt.c:596) ==7675== by 0xA47263: (anonymous namespace)::pass_ipa_devirt::execute() (ipa-utils.h:87) ==7675== by 0xB22AA9: execute_one_pass(opt_pass*) (passes.c:2201) ==7675== by 0xB2327A: execute_ipa_pass_list(opt_pass*) (passes.c:2565) ==7675== by 0x88F575: compile() (cgraphunit.c:1965) ==7675== by 0x88FD09: finalize_compilation_unit() (cgraphunit.c:2209) ==7675== by 0x693630: cp_write_global_declarations() (decl2.c:4364) ==7675== by 0xC142AC: compile_file() (toplev.c:560) ==7675== by 0xC160C9: toplev_main(int, char**) (toplev.c:1878) ==7675== by 0x5A3C60C: (below main) (in /lib64/libc-2.15.so) ==7675== Address 0x8 is not stack'd, malloc'd or (recently) free'd ==7675== testcase.C:14:1: internal compiler error: Segmentation fault $ gcc -v Using built-in specs. COLLECT_GCC=/mnt/svn/gcc-trunk/binary-latest/bin/gcc COLLECT_LTO_WRAPPER=/mnt/svn/gcc-trunk/binary-202196-lto-fortran-checking-yes-rtl-df/libexec/gcc/x86_64-unknown-linux-gnu/4.9.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: /mnt/svn/gcc-trunk//configure --enable-checking=yes,rtl,df --enable-languages=c,c++,lto,fortran --prefix=/mnt/svn/gcc-trunk/binary-202196-lto-fortran-checking-yes-rtl-df/ --without-cloog --without-ppl Thread model: posix gcc version 4.9.0 20130903 (experimental) (GCC)