I just split the "library code" (data types and instances) and the client code (type-specialized use) into two modules. Same great results, as long as both modules are compiled with -O (not even -O2). Sweet!
On Thu, Jan 28, 2016 at 10:12 AM, Conal Elliott <[email protected]> wrote: > Hah! I had misread the signatures in the Core output. I'm getting exactly > the dictionary removal I wanted. Fantastic! > > I'm attaching my sample source code and the Core it produces. > > Sorry for the misdirection, and kudos for specialis/zation in GHC! > > -- Conal > > On Thu, Jan 28, 2016 at 4:54 AM, Simon Peyton Jones <[email protected] > > wrote: > >> Aggressive inlining is one way, but specialisation ought to get a long >> way, and makes fewer copies of the specialised code. >> >> >> >> It’s hard to help without a concrete example >> >> >> >> Simon >> >> >> >> *From:* ghc-devs [mailto:[email protected]] *On Behalf Of *Conal >> Elliott >> *Sent:* 28 January 2016 00:05 >> *To:* [email protected] >> *Subject:* More aggressive dictionary removal? >> >> >> >> I'm looking for pointers on getting GHC to eliminate more overloading & >> polymorphism. I think this sort of thing mainly happens in the Specialise >> module. The default GHC flag settings get me a couple levels of >> monomorphization and dictionary removal, but I want to go further. I've >> tried -fspecialise-aggressively, but it didn't seem to make a difference, >> and I haven't found this flag described in the GHC user's guide. Anyone >> have pointers to more information? >> >> Thanks, - Conal >> > >
_______________________________________________ ghc-devs mailing list [email protected] http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
