[Bug lto/66295] [5/6/7 Regression] LTO generates incorrect resolver call for function multiversioning
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jul 22 07:21:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66295
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
for example g++.dg/ext/mvc1.C ICEs with LTO because the simple IPA pass
target_clone which runs in the IPA pipeline ICEs during WPA:
lto1: internal compiler error: Segmentation fault^M
0xd66336 crash_signal^M
/space/rguenther/src/svn/early-lto-debug/gcc/toplev.c:335^M
0xe0940d copy_forbidden(function*)^M
/space/rguenther/src/svn/early-lto-debug/gcc/tree-inline.c:3524^M
this is because DECL_STRUCT_FUNCTION is NULL as ipa_target_clone does
static unsigned int
ipa_target_clone (void)
{
struct cgraph_node *node;
target_clone_pass = false;
FOR_EACH_FUNCTION (node)
if (node->definition)
target_clone_pass |= expand_target_clones (node, true);
return 0;
but it seems to expect bodies to be available. It looks like the pass wants
to create clones that are materialized only in one of the ltrans units instead
and thus this IPA pass is really not LTO aware properly.
More information about the Gcc-bugs
mailing list