[GHC] #8472: Primitive string literals prevent optimization

GHC ghc-devs at haskell.org
Fri Jan 20 19:52:53 UTC 2017


#8472: Primitive string literals prevent optimization
-------------------------------------+-------------------------------------
        Reporter:  akio              |                Owner:  gridaphobe
            Type:  bug               |               Status:  patch
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  7.6.3
      Resolution:                    |             Keywords:  newcomer
Operating System:  Linux             |         Architecture:  x86_64
 Type of failure:  Runtime           |  (amd64)
  performance bug                    |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):  Phab:D2554,
       Wiki Page:                    |  Phab:D2605
-------------------------------------+-------------------------------------

Comment (by Ben Gamari <ben@…>):

 In [changeset:"d49b2bb21691892ca6ac8f2403e31f2a5e53feb3/ghc" d49b2bb/ghc]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="d49b2bb21691892ca6ac8f2403e31f2a5e53feb3"
 Allow top-level string literals in Core (#8472)

 This commits relaxes the invariants of the Core syntax so that a
 top-level variable can be bound to a primitive string literal of type
 Addr#.

 This commit:

 * Relaxes the invatiants of the Core, and allows top-level bindings whose
   type is Addr# as long as their RHS is either a primitive string literal
 or
   another variable.

 * Allows the simplifier and the full-laziness transformer to float out
   primitive string literals to the top leve.

 * Introduces the new StgGenTopBinding type to accomodate top-level Addr#
   bindings.

 * Introduces a new type of labels in the object code, with the suffix
 "_bytes",
   for exported top-level Addr# bindings.

 * Makes some built-in rules more robust. This was necessary to keep them
   functional after the above changes.

 This is a continuation of D2554.

 Rebasing notes:
 This had two slightly suspicious performance regressions:

 * T12425: bytes allocated regressed by roughly 5%
 * T4029: bytes allocated regressed by a bit over 1%
 * T13035: bytes allocated regressed by a bit over 5%

 These deserve additional investigation.

 Rebased by: bgamari.

 Test Plan: ./validate --slow

 Reviewers: goldfire, trofi, simonmar, simonpj, austin, hvr, bgamari

 Reviewed By: trofi, simonpj, bgamari

 Subscribers: trofi, simonpj, gridaphobe, thomie

 Differential Revision: https://phabricator.haskell.org/D2605

 GHC Trac Issues: #8472
 }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8472#comment:20>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list