Hi, my yesterday patch introduced ICE on combining -O2 and -O0 translation units (since the second has missing summary).
Bootstrapped/regtested x86_64-linux, comitted. Honza * ipa-fnsummary.c (ipa_merge_fn_summary_after_inlining): Check for missing EDGE_REF * ipa-prop.c (update_jump_functions_after_inlining): Likewise. Index: ipa-fnsummary.c =================================================================== --- ipa-fnsummary.c (revision 277503) +++ ipa-fnsummary.c (working copy) @@ -3315,7 +3315,7 @@ ipa_merge_fn_summary_after_inlining (str if (ipa_node_params_sum && callee_info->conds) { class ipa_edge_args *args = IPA_EDGE_REF (edge); - int count = ipa_get_cs_argument_count (args); + int count = args ? ipa_get_cs_argument_count (args) : 0; int i; if (count) Index: ipa-prop.c =================================================================== --- ipa-prop.c (revision 277503) +++ ipa-prop.c (working copy) @@ -2741,7 +2741,7 @@ update_jump_functions_after_inlining (st /* We must check range due to calls with variable number of arguments and we cannot combine jump functions with operations. */ if (dst->value.pass_through.operation == NOP_EXPR - && (dst->value.pass_through.formal_id + && (top && dst->value.pass_through.formal_id < ipa_get_cs_argument_count (top))) { int dst_fid = dst->value.pass_through.formal_id; @@ -3430,7 +3430,7 @@ update_indirect_edges_after_inlining (st continue; /* We must check range due to calls with variable number of arguments: */ - if (ici->param_index >= ipa_get_cs_argument_count (top)) + if (!top || ici->param_index >= ipa_get_cs_argument_count (top)) { ici->param_index = -1; continue;