Help on first ticket

Simon Peyton Jones simonpj at microsoft.com
Fri Jun 24 11:20:15 UTC 2016


Richard, did you get on ok?

Simon

|  -----Original Message-----
|  From: ghc-devs [mailto:ghc-devs-bounces at haskell.org] On Behalf Of Ben
|  Gamari
|  Sent: 04 June 2016 23:20
|  To: Richard Fung <minesasecret at gmail.com>; ghc-devs at haskell.org
|  Subject: Re: Help on first ticket
|  
|  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.
|  >
|  Hi Richard!
|  
|  > 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.
|  
|  Cheers,
|  
|  - Ben
|  _______________________________________________
|  ghc-devs mailing list
|  ghc-devs at haskell.org
|  https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fmail.h
|  askell.org%2fcgi-bin%2fmailman%2flistinfo%2fghc-
|  devs&data=01%7c01%7csimonpj%40064d.mgd.microsoft.com%7c5ce47a744a1448f
|  ff5cb08d38cc666b8%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=V22RG%2
|  fAiO1lD5bLCR%2fXz2jv5QCzYAK5HUi6dDaAFQLA%3d


More information about the ghc-devs mailing list