
#12979: -fspecialise-aggressively is not documented -------------------------------------+------------------------------------- Reporter: mpickering | Owner: Type: task | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: newcomer Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by danharaj): The relevant documentation seems to be: {{{ Note [Specialise imported INLINABLE things] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ What imported functions do we specialise? The basic set is * DFuns and things with INLINABLE pragmas. but with -fspecialise-aggressively we add * Anything with an unfolding template Trac #8874 has a good example of why we want to auto-specialise DFuns. We have the -fspecialise-aggressively flag (usually off), because we risk lots of orphan modules from over-vigorous specialisation. However it's not a big deal: anything non-recursive with an unfolding-template will probably have been inlined already. }}} I have experimented with using this flag too, but it didn't do much for my use case beyond `-fexpose-all-unfoldings` and generous use of `INLINABLE`. As I understand it, instead I could use `-fexpose-all-unfoldings` and `-fspecialise-aggressively` and need not worry about putting `INLINABLE` annotations on my declarations. Is that correct? By the way, it is really brutal on compilation times! -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12979#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler