Hi, this patch fixes ICE seen with testcase for PR62121 that is pasto in size checking. The GCC 4.9 issue is different and fixed in meantime. I will backport that change.
Bootstrapped/regtested x86_64-linux, comitted. PR ipa/62121 * ipa-polymorphic-call.c (ipa_polymorphic_call_context::restrict_to_inner_class): fix pasto in checking array size. * g++.dg/torture/pr62121.C: New testcase. Index: ipa-polymorphic-call.c =================================================================== --- ipa-polymorphic-call.c (revision 215645) +++ ipa-polymorphic-call.c (working copy) @@ -327,7 +327,7 @@ ipa_polymorphic_call_context::restrict_t && (cur_offset + (expected_type ? tree_to_uhwi (TYPE_SIZE (expected_type)) : 0) - > tree_to_uhwi (TYPE_SIZE (type)))) + > tree_to_uhwi (TYPE_SIZE (subtype)))) goto no_useful_type_info; cur_offset = new_offset; Index: testsuite/g++.dg/torture/pr62121.C =================================================================== --- testsuite/g++.dg/torture/pr62121.C (revision 0) +++ testsuite/g++.dg/torture/pr62121.C (revision 0) @@ -0,0 +1,12 @@ +// { dg-do compile } +class A +{ + virtual double operator()(); +}; +class B : A +{ +public: + double operator()(); +}; +extern B a[]; +int b = a[0]();