[GHC] #15036: STG Linter dies when linting primitive

#15036: STG Linter dies when linting primitive -------------------------------------+------------------------------------- Reporter: andrewthad | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: 8.6.1 Component: Compiler | Version: 8.4.1 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- Steps to reproduce: - Check out the master branch of primitive. Commit hash is currently 6b49e83fef0126ac09db7acf47f16df43ebce61b. - `cabal new-build -w ghc-8.4.1 --ghc-options -dstg-lint` - The impossible happened Ben, I saw that you had been fixing the stg linter so I'm CCing you in case this is related to your work on it. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15036 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#15036: STG Linter dies when linting primitive -------------------------------------+------------------------------------- Reporter: andrewthad | Owner: (none) Type: bug | Status: closed Priority: normal | Milestone: 8.6.1 Component: Compiler | Version: 8.4.1 Resolution: duplicate | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: #14787 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by RyanGlScott): * status: new => closed * resolution: => duplicate * related: => #14787 Comment: This can be reduced down to: {{{#!hs module Bug where foreign import ccall unsafe "wat" wat :: IO () }}} {{{ $ ghc Bug.hs -dstg-lint -fforce-recomp [1 of 1] Compiling Bug ( Bug.hs, Bug.o ) ghc: panic! (the 'impossible' happened) (GHC version 8.4.1 for x86_64-unknown-linux): *** Stg Lint ErrMsgs: in Unarise *** <no location info>: warning: [in body of lambda with binders void_0E :: Void#] In some algebraic case alternative, constructor is not a constructor of scrutinee type: (# State# RealWorld #) (##) *** Offending Program *** $trModule1_r1b1 :: Addr# [GblId, Caf=NoCafRefs, Unf=OtherCon []] = "main"#; $trModule2_r1bm :: TrName [GblId, Caf=NoCafRefs, Unf=OtherCon []] = CCS_DONT_CARE TrNameS! [$trModule1_r1b1]; $trModule3_r1bn :: Addr# [GblId, Caf=NoCafRefs, Unf=OtherCon []] = "Bug"#; $trModule4_r1bo :: TrName [GblId, Caf=NoCafRefs, Unf=OtherCon []] = CCS_DONT_CARE TrNameS! [$trModule3_r1bn]; $trModule :: Module [GblId, Caf=NoCafRefs, Unf=OtherCon []] = CCS_DONT_CARE Module! [$trModule2_r1bm $trModule4_r1bo]; wat1_r1bp :: State# RealWorld -> (# State# RealWorld, () #) [GblId, Arity=1, Caf=NoCafRefs, Unf=OtherCon []] = sat-only [] \r [void_0E] case __pkg_ccall main [void#] of { (##) -> Unit# [()]; }; wat :: IO () [GblId, Arity=1, Caf=NoCafRefs, Unf=OtherCon []] = [] \r [void_0E] wat1_r1bp void#; *** End of Offense *** Call stack: CallStack (from HasCallStack): callStackDoc, called at compiler/utils/Outputable.hs:1150:37 in ghc:Outputable pprPanic, called at compiler/stgSyn/StgLint.hs:68:19 in ghc:StgLint }}} However, osa1 fixed this in #14787—and indeed, `primitive` builds on GHC HEAD with `-dstg-lint`, both in version 0.6.3.0 and upstream—so closing. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15036#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC