[Bug ipa/79776] [7 Regression] ICE on valid code in insert_vi_for_tree, at tree-ssa-structalias.c:2807
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Mar 27 07:50:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79776
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org
--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> ---
We are ignoring global.inlined_to when walking over nodes already.
What I wonder now is, as we're obviously seeing thunks as first class functions
in IPA-PTA, we are walking over thunks in addition to aliases at all. I
suppose
this is for the case the thunk doesn't have a body (and thus we'd miss the
call to the real function).
Thus
Index: gcc/tree-ssa-structalias.c
===================================================================
--- gcc/tree-ssa-structalias.c (revision 246489)
+++ gcc/tree-ssa-structalias.c (working copy)
@@ -7615,7 +7615,7 @@ struct pt_solution ipa_escaped_pt
static bool
associate_varinfo_to_alias (struct cgraph_node *node, void *data)
{
- if ((node->alias || node->thunk.thunk_p)
+ if ((node->alias || (node->thunk.thunk_p && ! node->has_gimple_body_p ()))
&& node->analyzed)
insert_vi_for_tree (node->decl, (varinfo_t)data);
return false;
not sure why we check ->analyzed here.
Hmm, but thunks never have a body according to has_gimple_body_p.
So we are skipping all thunks, even those with gimple bodies, in
FOR_EACH_DEFINED_FUNCTION (node)
{
varinfo_t vi;
/* Nodes without a body are not interesting. Especially do not
visit clones at this point for now - we get duplicate decls
there for inline clones at least. */
if (!node->has_gimple_body_p () || node->global.inlined_to)
continue;
that means excluding inlined_to thunks is ok.
Testing that.
More information about the Gcc-bugs
mailing list