Jan Hubicka <hubi...@ucw.cz> writes: > * cgraph.c (cgraph_create_indirect_edge): Update call of > get_polymorphic_call_info. > * ipa-utils.h (get_polymorphic_call_info): Add parameter CALL. > (possible_polymorphic_call_targets): Add parameter call. > (decl_maybe_in_construction_p): New predicate. > (get_polymorphic_call_info): Add parameter call; > use decl_maybe_in_construction_p. > * gimple-fold.c (fold_gimple_assign): Update use of > possible_polymorphic_call_targets. > (gimple_fold_call): Likewise. > * ipa-prop.c: Inlcude calls.h > (ipa_binfo_from_known_type_jfunc): Check that known type is record. > (param_type_may_change_p): New predicate. > (detect_type_change_from_memory_writes): Break out from ... > (detect_type_change): ... this one; use > param_type_may_change_p. > (detect_type_change_ssa): Use param_type_may_change_p. > (compute_known_type_jump_func): Use decl_maybe_in_construction_p.
This breaks g++.dg/ipa/pr61085.C on ia64. (gdb) bt #0 0xa000000000040721 in __kernel_syscall_via_break () #1 0x20000000004331d0 in *__GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:67 #2 0x2000000000435ab0 in *__GI_abort () at abort.c:92 #3 0x40000000000009e0 in C::m_virt (this=0x4000000000000760 <main()+96>) at /usr/local/gcc/gcc-20140707/gcc/testsuite/g++.dg/ipa/pr61085.C:26 #4 0x4000000000000760 in m_foo (this=0x600ffffffffeee40) at /usr/local/gcc/gcc-20140707/gcc/testsuite/g++.dg/ipa/pr61085.C:20 #5 ~B (__vtt_parm=<optimized out>, this=0x600ffffffffeee40, __in_chrg=<optimized out>) at /usr/local/gcc/gcc-20140707/gcc/testsuite/g++.dg/ipa/pr61085.C:14 #6 ~C (this=0x600ffffffffeee40, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at /usr/local/gcc/gcc-20140707/gcc/testsuite/g++.dg/ipa/pr61085.C:24 #7 main () at /usr/local/gcc/gcc-20140707/gcc/testsuite/g++.dg/ipa/pr61085.C:32 Andreas. -- Andreas Schwab, SUSE Labs, sch...@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different."