
What if you go with the big hammer for that module: -O0? My main concern
about that is that you won't get arity analysis. There may be some more -f
flags I've missed...
On Fri, Jan 20, 2023, 5:17 AM Michael Sperber
On Fri, Jan 20 2023, David Feuer
wrote: I don't know what all that means exactly (especially since GHC's demand signatures have changed recently in a way I don't understand at all). But for hiding divergence, one option is to use a module with demand analysis disabled. Try {-# options_ghc -fno-strictness #-}. You'll likely need to put oops in its own module to avoid interfering with desired optimizations.
THanks for the suggestion!
So I did this:
{-# options_ghc -fno-strictness #-} module ConCat.Oops(oops) where
import GHC.Stack (errorWithStackTrace) -- for oops
-- | Pseudo function to fool GHC's divergence checker. oops :: String -> b oops str = errorWithStackTrace ("Oops: "++str) {-# NOINLINE oops #-}
... but am getting the same result from the divergence checker, sadly ...
-- Regards, Mike