https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117964
Bug ID: 117964
Summary: duplicate computed gotos will happily duplicate blocks
with 9189 successors
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: rguenth at gcc dot gnu.org
Target Milestone: ---
The PR26854 testcase
(http://www.math.purdue.edu/~lucier/gcc/test-files/bugzilla/1/all.i.gz) shows
that maybe_duplicate_computed_goto while applying
a limit on the insn size copied per computed goto duplicated, it does not
limit the number of computed goto copies it creates (EDGE_COUNT (bb->preds))
or the number of outgoing edges it will duplicate by this (EDGE_COUNT
(bb->succs)). For the PR we have 5739 predecessors and 9189 successors for the
factored computed goto block which results in 3GB worth of edges to be
created.
It will also, for each level of duplication (via the recursion) add an
additional BARRIER given emit_barrier_after_bb does not check whether
there's one present already (we seem to be in CFGRTL for this pass).