Hi, compute_complex_ancestor_jump_func tries to match a pattern like this: if (obj_2(D) != 0B) goto ; else goto ; : iftmp.1_3 = &obj_2(D)->D.1762; : # iftmp.1_1 = PHI D.1879_6 = middleman_1 (iftmp.1_1, i_5(D)); return D.1879_6; */ At some point while working at the devirtualization issues I have seen this failing because the zero was the zeroth parameter in the phi node. I think it is necessary for some of the new testcases to work but I am not really sure any more, I only remembered when I was splitting the big patch into separate ones. I did not bootstrap this patch separately but it did pas bootstrap and testsuite on x86_64-linux and make check-c++ on i686 together with the rest. Thanks, Martin 2010-11-30 Martin Jambor * ipa-prop.c (compute_complex_ancestor_jump_func): Work also if the zero is the first phi parameter. Index: icln/gcc/ipa-prop.c =================================================================== --- icln.orig/gcc/ipa-prop.c +++ icln/gcc/ipa-prop.c @@ -461,11 +461,15 @@ compute_complex_ancestor_jump_func (stru tree tmp, parm, expr; int index, i; - if (gimple_phi_num_args (phi) != 2 - || !integer_zerop (PHI_ARG_DEF (phi, 1))) + if (gimple_phi_num_args (phi) != 2) return; - tmp = PHI_ARG_DEF (phi, 0); + if (integer_zerop (PHI_ARG_DEF (phi, 1))) + tmp = PHI_ARG_DEF (phi, 0); + else if (integer_zerop (PHI_ARG_DEF (phi, 0))) + tmp = PHI_ARG_DEF (phi, 1); + else + return; if (TREE_CODE (tmp) != SSA_NAME || SSA_NAME_IS_DEFAULT_DEF (tmp) || !POINTER_TYPE_P (TREE_TYPE (tmp))