https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66962

--- Comment #13 from Andrew Sutton <andrew.n.sutton at gmail dot com> ---
There are a couple of other problems in the minimized example (concept int
shows up a couple of times, there's a variable template whose initializer is a
requires expression). I doubt those contribute to the observed problem.

I suspect there's something else at work. There was a performance problem
related earlier this year where (either) normalization or decomposition was
being applied for each subexpression multiple times.

The total number of elements in a decomposition should be linear w.r.t. to the
number of disjunctions. I'll try to look through this tomorrow.

A possible optimization is to store specializations of each concept being
normalized, so we don't expand to the same expressions over and over again --
basically, helping to ensure that we don't have lots of duplicate cases that
we're proving over and over again. It would probably be a good idea to prove
that's logically sound before implementing :/

Reply via email to