[GHC] #11649: LLVM code generator produces mal-formed LLVM blocks

GHC ghc-devs at haskell.org
Thu Sep 14 21:32:41 UTC 2017


#11649: LLVM code generator produces mal-formed LLVM blocks
-------------------------------------+-------------------------------------
        Reporter:  bgamari           |                Owner:  erikd
            Type:  bug               |               Status:  closed
        Priority:  highest           |            Milestone:  8.0.1
       Component:  Compiler          |              Version:  8.0.1-rc2
  (CodeGen)                          |
      Resolution:  fixed             |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  crash                              |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #9043             |  Differential Rev(s):  Phab:D1996
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by kavon):

 The entry block restriction isn't a bug in LLVM, it's just part of their
 IR design. I believe that not having any predecessors of the entry block
 simplifies some things related to computing dominators (plus, the way phi
 nodes work in LLVM makes it weird to write one for an entry block to merge
 incoming function arguments).

 A better fix for this issue would also include a way to avoid making a
 pass over the Cmm procedure to determine which global registers need
 allocas (which can only be declared in the entry block).

 Here's my proposal to solve both problems: For each CmmProc, after turning
 its Cmm blocks into LLVM blocks, we should generate a brand new entry
 basic block. This new entry block would include the allocas that we need
 for the function and then branch to the translated version of the original
 entry block.

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


More information about the ghc-tickets mailing list