#7112: No inlining in the presence of non-instantiated phantom type
------------------------------+---------------------------------------------
 Reporter:  dreixel           |          Owner:                  
     Type:  bug               |         Status:  new             
 Priority:  normal            |      Component:  Compiler        
  Version:  7.4.1             |       Keywords:                  
       Os:  Unknown/Multiple  |   Architecture:  Unknown/Multiple
  Failure:  None/Unknown      |       Testcase:                  
Blockedby:                    |       Blocking:                  
  Related:                    |  
------------------------------+---------------------------------------------
 Consider the following code:
 {{{
 data U a = U

 g :: [U a]
 g = [U]

 f :: [Int]
 f = map (\U -> 2) g
 }}}

 Compiled with -O1, `g` does not get inlined, and `f` stays unchanged.
 Inline pragmas don't seem to help. However, if we change the type
 signature of `g` to instantiate the phantom type parameter, such as with
 `g :: [U ()]`, then `f` is nicely optimised to become `[2]`. I believe
 this is a bug, and we'd like `f` to be simplified even when `g` has its
 most general type signature.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7112>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler

_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to