https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124608
--- Comment #16 from Richard Biener <rguenth at gcc dot gnu.org> ---
So for the cp-demangle.c testcase we do not fininsh on function
d_count_templates_scopes
#5 (anonymous namespace)::analyze_function (ipa=<optimized out>)
at ../../gcc/gcc/ipa-modref.cc:3231
--Type <RET> for more, q to quit, c to continue without paging--
#6 0x0000000000f8f760 in (anonymous namespace)::pass_modref::execute (
this=<optimized out>) at ../../gcc/gcc/ipa-modref.cc:4199
#7 0x0000000000cc7edc in execute_one_pass (pass=0x1f94e00)
at ../../gcc/gcc/passes.cc:2651
#8 0x0000000000d637b4 in execute_pass_list_1 (pass=0x1f94e00)
at ../../gcc/gcc/passes.cc:2760
#9 0x0000000000d625c8 in execute_pass_list_1 (pass=<optimized out>)
at ../../gcc/gcc/passes.cc:2761
#10 execute_pass_list (fn=0x400000d327e8, pass=<optimized out>)
at ../../gcc/gcc/passes.cc:2771
#11 0x0000000000cf2f18 in do_per_function_toporder (
callback=0xd62544 <execute_pass_list(function*, opt_pass*)>,
data=0x1f94410) at ../../gcc/gcc/passes.cc:1780
#12 0x00000000012afdd4 in execute_ipa_pass_list (pass=0x1f943b0)
in particular we seem to endlessly loop in
void
modref_access_analysis::propagate ()
{
if (m_ipa && m_summary)
return;
bool changed = true;
bool first = true;
cgraph_node *fnode = cgraph_node::get (current_function_decl);
m_always_executed = false;
while (changed && m_summary->useful_p (m_ecf_flags, false))
{
changed = false;
for (unsigned i = 0; i < m_recursive_calls.length (); i++)
{
changed |= merge_call_side_effects (m_recursive_calls[i], m_summary,
fnode, !first);
}
first = false;
}
since we miscompile cc1 there's not much to say here - all, stage1, prev,
stagetrain cc1 binaries compile the file successfully.