https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91062
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Last reconfirmed| |2019-07-03 CC| |hubicka at gcc dot gnu.org Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- OK, so the issue is that IPA PTA is a simple IPA pass and does /* Build the constraints. */ 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; node->get_body (); ^^^ and get_body () ends up doing #0 ggc_collect () at /space/rguenther/src/svn/trunk2/gcc/ggc-page.c:2174 #1 0x0000000001032dbd in execute_one_ipa_transform_pass ( node=<cgraph_node * 0x7ffff687c708 "main"/3>, ipa_pass=0x31c8c50) at /space/rguenther/src/svn/trunk2/gcc/passes.c:2232 #2 0x0000000001032e34 in execute_all_ipa_transforms () at /space/rguenther/src/svn/trunk2/gcc/passes.c:2250 #3 0x0000000000ae023f in cgraph_node::get_body ( this=<cgraph_node * const 0x7ffff687c708 "main"/3>) at /space/rguenther/src/svn/trunk2/gcc/cgraph.c:3621 #4 0x00000000014b7162 in ipa_pta_execute () at /space/rguenther/src/svn/trunk2/gcc/tree-ssa-structalias.c:8077 thus it collects while a pass is running... omp-simd-clone.c seems to be the only other pass using ::get_body (also a simple IPA pass). We can pass down a flag from get_body to not call ggc_collect which I believe is the way to go?