[Bug ipa/70646] Corrupt truncated function
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Apr 14 08:59:00 GMT 2016
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).
More information about the Gcc-bugs
mailing list