Limit the number of relations registered per basic block.
authorAndrew MacLeod <amacleod@redhat.com>
Mon, 17 Jan 2022 17:03:18 +0000 (12:03 -0500)
committerAndrew MacLeod <amacleod@redhat.com>
Tue, 18 Jan 2022 15:02:02 +0000 (10:02 -0500)
commit254ada46ae0f21bd6f40314214f969f368328e22
tree45c2a9fd29aa47dda63f86debfd557c811ebe108
parentc952126870c92cf293d59ffb1497e402eb8fc269
Limit the number of relations registered per basic block.

In pathological cases, the number of transitive relations being added is
potentially quadratic.  Lookups for relations in a block is linear in
nature, so simply limit the number of relations to some reasonable number.

PR tree-optimization/104038
* doc/invoke.texi (relation-block-limit): New.
* params.opt (relation-block-limit): New.
* value-relation.cc (dom_oracle::register_relation): Check for NULL
record before invoking transitive registery.
(dom_oracle::set_one_relation): Check limit before creating record.
(dom_oracle::register_transitives): Stop when no record created.
* value-relation.h (relation_chain_head::m_num_relations): New.
gcc/doc/invoke.texi
gcc/params.opt
gcc/value-relation.cc
gcc/value-relation.h