[GHC] #11179: Allow plugins to access "dead code"
GHC
ghc-devs at haskell.org
Tue Dec 8 17:35:20 UTC 2015
#11179: Allow plugins to access "dead code"
-------------------------------------+-------------------------------------
Reporter: lerkok | Owner:
Type: feature | Status: new
request |
Priority: normal | Milestone:
Component: Compiler | Version: 7.10.2
Keywords: | Operating System: Unknown/Multiple
Architecture: | Type of failure: None/Unknown
Unknown/Multiple |
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
GHC removes dead-bindings quite early in the compilation process, which
makes perfect sense from a pure compilation point of view. But with user-
plugins, some of the dead-bindings can be interesting: They might be
properties or other code that instructs the plugin to do a certain action,
even if the binding isn't otherwise used anywhere else or exported. (Think
of embedded properties.)
Here's a discussion about the issue, where SimonPJ asked for a ticket to
be filed: [http://mail.haskell.org/pipermail/ghc-
devs/2015-December/010708.html]
It appears the desugarer removes some of the dead-code. One option could
be to stop the desugarer from doing that, and leaving it to the later
optimizer passes so plugins can still see all the bindings (if they run
early enough), or require the user to put in an "KeepAlive" pragma on
bindings that she cares about. While keeping all-dead code in the
desugarer would be the simplest thing to do, requiring the user to put in
a pragma isn't a terrible solution either.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11179>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list