[GHC] #11444: 8.0 rc1 panics in applyTypeToArgs

GHC ghc-devs at haskell.org
Thu Jan 12 00:44:44 UTC 2017


#11444: 8.0 rc1 panics in applyTypeToArgs
-------------------------------------+-------------------------------------
        Reporter:  osa1              |                Owner:
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.0.1-rc1
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by dfeuer):

 Replying to [comment:6 simonpj]:

 > Can you make a small test case so I can see?

 Based on your investigation, I've constructed a small test case:

 {{{#!hs
 {-# LANGUAGE MagicHash, BangPatterns #-}

 module PtrEqTest where
 import GHC.Exts (reallyUnsafePtrEquality#, Int (..))

 ptrEq :: a -> a -> Bool
 ptrEq !x !y = I# (reallyUnsafePtrEquality# x y) == 1
 }}}

 This produces the following error:

 {{{
 *** Core Lint errors : in result of Float out(FOS {Lam = Just 0,
                                                    Consts = True,
                                                    OverSatApps = False})
 ***
 <no location info>: warning:
     In the expression: I# (reallyUnsafePtrEquality# @ a x_a2Pv y_a2Pw)
     This argument does not satisfy the let/app invariant:
       reallyUnsafePtrEquality# @ a x_a2Pv y_a2Pw
 *** Offending Program ***
 lvl_s3Ub :: Int
 [LclId]
 lvl_s3Ub = I# 1#

 ptrEq :: forall a. a -> a -> Bool
 [LclIdX, Arity=2]
 ptrEq =
   \ (@ a_a3ID) (x_a2Pv :: a) (y_a2Pw :: a) ->
     case x_a2Pv of x_X2Pz { __DEFAULT ->
     case y_a2Pw of y_X2PB { __DEFAULT ->
     eqInt (I# (reallyUnsafePtrEquality# @ a x_a2Pv y_a2Pw)) lvl_s3Ub
     }
     }

 $trModule_s3U7 :: TrName
 [LclId]
 $trModule_s3U7 = TrNameS "main"#

 $trModule_s3U8 :: TrName
 [LclId]
 $trModule_s3U8 = TrNameS "PtrEqTest"#

 $trModule :: Module
 [LclIdX]
 $trModule = Module $trModule_s3U7 $trModule_s3U8
 }}}

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


More information about the ghc-tickets mailing list