[GHC] #8996: mark more things as const in C codegen

GHC ghc-devs at haskell.org
Mon Apr 24 16:53:53 UTC 2017


#8996: mark more things as const in C codegen
-------------------------------------+-------------------------------------
        Reporter:  slyfox            |                Owner:  (none)
            Type:  feature request   |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  7.8.2
  (CodeGen)                          |
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):  Phab:D3481
       Wiki Page:                    |
-------------------------------------+-------------------------------------

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

 In [changeset:"b68697e579d38ca29c2b84377dc2affa04659a28/ghc"
 b68697e5/ghc]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="b68697e579d38ca29c2b84377dc2affa04659a28"
 compiler/cmm/PprC.hs: constify labels in .rodata

 Consider one-line module
     module B (v) where v = "hello"
 in -fvia-C mode it generates code like
     static char gibberish_str[] = "hello";

 It resides in data section (precious resource on ia64!).
 The patch switches genrator to emit:
     static const char gibberish_str[] = "hello";

 Other types if symbols that gained 'const' qualifier are:

 - info tables (from haskell and CMM)
 - static reference tables (from haskell and CMM)

 Cleanups along the way:

 - fixed info tables defined in .cmm to reside in .rodata
 - split out closure declaration into 'IC_' / 'EC_'
 - added label declaration (based on label type) right before
   each label definition (based on section type) so that C
   compiler could check if declaration and definition matches
   at definition site.

 Signed-off-by: Sergei Trofimovich <slyfox at gentoo.org>

 Test Plan: ran testsuite on unregisterised x86_64 compiler

 Reviewers: simonmar, ezyang, austin, bgamari, erikd

 Reviewed By: bgamari, erikd

 Subscribers: rwbarton, thomie

 GHC Trac Issues: #8996

 Differential Revision: https://phabricator.haskell.org/D3481
 }}}

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


More information about the ghc-tickets mailing list