The issue is shows up in AutoFDO with:
• Multiple speculative calls within a single function.
• Complex interactions between the AutoFDO early-inliner, devirtualization,
and indirect call transformation.
• The ICE triggers when these calls are processed across different IPA
passes that inadvertently disrupt the cgraph_edge linked-list adjacency.
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123496
I have two patches that ensures the call-graph and call_site_hash invariants
are maintained during edge creation/redirection.
First patch measure that we don't create the same speculative edges are not
adding from different optimisations
Send patch measure that the order is maintained.
Bootstrapped and regression tested with now new regressions on
aarch64-linux-gnu with no new regressions.
Is this OK?
Thanks,
Kugan