[GHC] #10074: Implement the 'Improved LLVM Backend' proposal

GHC ghc-devs at haskell.org
Fri Mar 17 08:05:10 UTC 2017


#10074: Implement the 'Improved LLVM Backend' proposal
-------------------------------------+-------------------------------------
        Reporter:  thoughtpolice     |                Owner:  angerman
            Type:  task              |               Status:  new
        Priority:  high              |            Milestone:  8.4.1
       Component:  Compiler (LLVM)   |              Version:
      Resolution:                    |             Keywords:  llvm, codegen
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #11295, #12470    |  Differential Rev(s):  Phab:D530
       Wiki Page:                    |
  wiki:ImprovedLLVMBackend           |
-------------------------------------+-------------------------------------

Comment (by awson):

 Ah, it looks so much happened under the hood which I wasn't aware of!

 A couple of comments and answers then:
 1. `-flto` doesn't work on windows even on the current llvm5 and won't in
 the foreseeable future, because it requires GOLD linker plugin to work on
 unices, and we have neither on windows.
 2. AFAIUI, Matthias Braun's early advice to use `clang` driver was mostly
 inspired by his ignorance of how different STG execution model is from
 that of C, later he understood this and stated that since we need `-fllvm`
 anyway, i.e. need to bypass `clang`'s "high-level" predefined `-OX` sets
 of options then either using `clang` or `opt/llc` drivers is "equally
 good/bad" in our use case.
 3. Btw, why can't we simply do `ghc -> llvm ir -> clang -> mangler -> as
 -> object` if we still need the mangler? Or we can but *don't want*?
 4. Even if not using `clang`, a part of your patches in
 [https://phabricator.haskell.org/D3352] still looks relevant, e.g. we can
 drop `pprLlvmHeader/moduleLayout` thingy since it is inferred by LLVM
 tools from module target triple anyway.

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


More information about the ghc-tickets mailing list