[GHC] #14901: dsrun004 fails with most ways

GHC ghc-devs at haskell.org
Thu Mar 22 12:37:24 UTC 2018


#14901: dsrun004 fails with most ways
-------------------------------------+-------------------------------------
        Reporter:  alpmestan         |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.5
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Incorrect result  |  Unknown/Multiple
  at runtime                         |            Test Case:  dsrun004
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by alpmestan):

 If I change one or more `seq`s into `pseq`, in order for this test to be a
 little more useful (because `pseq` might prevent some transformations that
 could make things go wrong with `seq`, so we can hope that the trace is
 reliably `one` then `two`), ghc isn't happy:

 {{{#!hs
 ...
 import GHC.Conc
 ...

 {-# NOINLINE f #-}
 f :: a -> b -> (# a,b #)
 f x y = x `pseq` y `pseq` (# x,y #)
 -- similar with x `pseq` y `seq` (# x,y #)
 }}}

 {{{
 dsrun014.hs:10:9: error:
     • Couldn't match a lifted type with an unlifted type
       When matching types
         b0 :: *
         (# a, b #) :: TYPE
                         ('GHC.Types.TupleRep '['GHC.Types.LiftedRep,
 'GHC.Types.LiftedRep])
     • In the expression: x `pseq` y `pseq` (# x, y #)
       In an equation for ‘f’: f x y = x `pseq` y `pseq` (# x, y #)
     • Relevant bindings include
         y :: b (bound at dsrun014.hs:10:5)
         x :: a (bound at dsrun014.hs:10:3)
         f :: a -> b -> (# a, b #) (bound at dsrun014.hs:10:1)

 dsrun014.hs:10:27: error:
     • Couldn't match a lifted type with an unlifted type
       When matching types
         b0 :: *
         (# a, b #) :: TYPE
                         ('GHC.Types.TupleRep '['GHC.Types.LiftedRep,
 'GHC.Types.LiftedRep])
     • In the second argument of ‘pseq’, namely ‘(# x, y #)’
       In the second argument of ‘pseq’, namely ‘y `pseq` (# x, y #)’
       In the expression: x `pseq` y `pseq` (# x, y #)
     • Relevant bindings include
         y :: b (bound at dsrun014.hs:10:5)
         x :: a (bound at dsrun014.hs:10:3)
 }}}

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


More information about the ghc-tickets mailing list