https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70646
--- Comment #11 from Richard Biener <rguenth at gcc dot gnu.org> --- Happens via (gdb) bt #0 redirect_to_unreachable (e=0x7ffff6891820) at /space/rguenther/src/svn/trunk3/gcc/ipa-inline-analysis.c:735 #1 0x0000000000bc9325 in edge_set_predicate (e=0x7ffff6891820, predicate=0x7fffffffc980) at /space/rguenther/src/svn/trunk3/gcc/ipa-inline-analysis.c:768 #2 0x0000000000bd1df7 in remap_edge_summaries (inlined_edge=0x7ffff68912d8, node=<cgraph_node* 0x7ffff69b1000 "wwn_to_u64.constprop">, info=0x7ffff6994ba0, callee_info=0x7ffff6994c60, operand_map=..., offset_map=..., possible_truths=0, toplev_predicate=0x7fffffffca30) at /space/rguenther/src/svn/trunk3/gcc/ipa-inline-analysis.c:3500 #3 0x0000000000bd2603 in inline_merge_summary (edge=0x7ffff68912d8) at /space/rguenther/src/svn/trunk3/gcc/ipa-inline-analysis.c:3647 #4 0x00000000017f2b84 in inline_call (e=0x7ffff68912d8, update_original=true, Python Exception <class 'gdb.error'> There is no member or method named m_vecpfx.: new_edges=0x7fffffffd9d0, overall_size=0x25c63e0 <_ZL12overall_size>, update_overall_summary=true, callee_removed=0x0) at /space/rguenther/src/svn/trunk3/gcc/ipa-inline-transform.c:370 #5 0x00000000017e8953 in inline_small_functions () at /space/rguenther/src/svn/trunk3/gcc/ipa-inline.c:2022 #6 0x00000000017e9ca7 in ipa_inline () so somehow it get's confused: BB 2 predicate:(true) _3 = MEM[(const u64 *)wwn_2(D)]; freq:1.00 size: 1 time: 1 50% will be eliminated by inlining Accounting size:0.50, time:0.50 on new predicate:(op0[ref offset: 0] changed) && (not inlined) Accounting size:0.50, time:0.50 on new predicate:(op0[ref offset: 0] changed) _4 = __builtin_constant_p (_3); freq:1.00 size: 0 time: 0 if (_4 != 0) freq:1.00 size: 2 time: 2 Accounting size:2.00, time:2.00 on predicate:(op0[ref offset: 0] changed) BB 4 predicate:(op0[ref offset: 0] not constant) iftmp.0_26 = __builtin_bswap64 (_3); freq:0.61 size: 1 time: 1 BB 3 predicate:(true) _5 = _3 << 56; (BB 3 predicate shouldn't be true) Honza? This seems to be somewhat fragile (redirecting things to unreachable but _not_ changing the actual predicates in the IL). Claiming the predicate is constant true is also a bit bogus (as can be seen in following optimization).