Retain inline-pragma information on unfoldings in interface files
authorsimonpj@microsoft.com <unknown>
Wed, 25 Apr 2007 07:49:24 +0000 (07:49 +0000)
committersimonpj@microsoft.com <unknown>
Wed, 25 Apr 2007 07:49:24 +0000 (07:49 +0000)
commitd33c0b24a0306cc57161b7ed7ff2510d0b017b11
tree44f922194de78e6f25b380da39a6fd39a9e62449
parent7739158ff9d983f80cb269f3c7cb38108e72e8ec
Retain inline-pragma information on unfoldings in interface files

WARNING: this patch changes interface-file formats slightly
   you will need to recompile your libraries

Duncan Coutts wanted to export a function that has a NOINLNE pragma
in a local let-defintion.  This works fine within a module, but was
not surviving across the interface-file serialisation.

http://www.haskell.org/pipermail/glasgow-haskell-users/2007-March/012171.html

Regardless of whether or not he's doing something sensible, it seems
reasonable to try to retain local-binder IdInfo across interface files.
This initial patch just retains inline-pragma info, on the grounds that
other IdInfo can be re-inferred at the inline site.

Interface files get a tiny bit bigger, but it seesm slight.
compiler/coreSyn/CoreTidy.lhs
compiler/iface/BinIface.hs
compiler/iface/IfaceSyn.lhs
compiler/iface/IfaceType.lhs
compiler/iface/MkIface.lhs
compiler/iface/TcIface.lhs
compiler/parser/ParserCore.y