I suspect I've found a situation where, to a first approximation, I'd like SpecConstr to run more than once.<div><br></div><div>I'm specializing on GADT constructors that contain coercions, so the constructor-specialized functions have RHSs with refined types. In my situation, those refined types enable simplifications/specializations that eventually result in additional calls that would lead to further constructor-specializations if the eventual calls were somehow already manifest. But it seems that the simplification/specialization only happens after the SpecConstr pass, so the resulting usages don't lead to further constructor-specialized functions.<div>
<br></div></div><div>Ticket 2642 <a href="http://hackage.haskell.org/trac/ghc/ticket/2642">http://hackage.haskell.org/trac/ghc/ticket/2642</a> is the only mention I've seen of the SpecConstr pass being repeated.<br></div>
<div><br></div><div>The more I think about my desired behavior of SpecConstr, the more I suspect that a failure to maximally share the constructor-specializations (leading to possible non-termination) might be a concern if the pass were simply repeated in my particular case.<br>
</div><div><br></div><div>Regarding broader impact, I suspect this situation might arise with heavy uses of single types.</div><div><br></div><div><div>Is there any known mechanisms to handle this interaction between SpecConstr and GADTs? I'll be able to provide concrete details about my situation in a few weeks, if anyone is interested.</div>
</div><div><br></div><div>Thanks for your time.</div>