Help on first ticket
ben at smart-cactus.org
Sat Jun 4 22:20:07 UTC 2016
Richard Fung <minesasecret at gmail.com> writes:
> Hello! I apologize if this isn't the right place to ask; if it isn't please
> steer me in the right direction.
> Would anyone be willing to advise me on my first ticket? I've been trying
> to work on it on and off but haven't made much progress on my own.
> It's ticket #9370: https://ghc.haskell.org/trac/ghc/ticket/9370
Great, I'm happy to hear that someone has picked this one up. I think it
is a nice choice for a self-contained newcomers project.
> I think I understand the issue conceptually but I don't know where to look
> for the code that needs to be changed..
I don't know where the code responsible for this is off the top of my
head, however I can provide some pointers.
So the unfoldings you are looking to preserve come from interface files.
The machinery for all of this is in compiler/iface. IfaceSyn.hs is of
particular interest and there you will find the definition of
IfaceUnfolding, which is the unfolding representation which is stored in
the interface file. Unfoldings live inside of IdInfo values, which hold
various miscellaneous information which we need to preserve about a
particular Id (identifier).
There is a somewhat useful comment regarding how IdInfo is treated above
the definition of IfaceIdInfo in IfaceSyn. In particular it seems that
interface files for modules compiled with -O0 will have their IdInfo
fields set to NoInfo. It's not clear what happens when an interface file
is read. However, grepping for NoInfo reveals a use-site in
TcIface.tcIdInfo which looks interesting (in particular the ignore_prags
guard). I think this should be enough to get you going on the interface
file part of this.
The other part of this ticket is deciding whether to use an unfolding
when considering whether to inline. This will be done in the simplifier
(compiler/simplCore). Grepping for "inline" and "unfold" in
simplCore/Simplify.hs (as well as reading the notes in that file) will
likely be enough to get you started.
Do let me know if you still feel lost or want to discuss this further. I
look forward to hearing how it goes.
More information about the ghc-devs