[GHC] #13417: piResultTys1

#13417: piResultTys1 -------------------------------------+------------------------------------- Reporter: ralf | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.2 Keywords: | Operating System: Linux Architecture: x86_64 | Type of failure: Compile-time (amd64) | crash or panic Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- Error provoked by attached H98 program (which is generated by a program); compiles fine without optimizations; compilation with -O2 crashes: $ ghc --make -O2 FactorialSequ.lhs [1 of 1] Compiling FactorialSequ ( FactorialSequ.lhs, FactorialSequ.o ) ghc: panic! (the 'impossible' happened) (GHC version 8.0.2 for x86_64-unknown-linux): piResultTys1 Sequ7 t_a2zl [a_a2zm] -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13417 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#13417: piResultTys1 -------------------------------------+------------------------------------- Reporter: ralf | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.2 Resolution: | Keywords: Operating System: Linux | Architecture: x86_64 Type of failure: Compile-time | (amd64) crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by RyanGlScott): What program is this? I don't see an attachment. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13417#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#13417: piResultTys1 -------------------------------------+------------------------------------- Reporter: ralf | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.2 Resolution: | Keywords: Operating System: Linux | Architecture: x86_64 Type of failure: Compile-time | (amd64) crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by ralf): I know, the reason is simple: Trac crashed when I tried to do attach the file, asking me to file a bug report ... -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13417#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#13417: piResultTys1 -------------------------------------+------------------------------------- Reporter: ralf | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.2 Resolution: | Keywords: Operating System: Linux | Architecture: x86_64 Type of failure: Compile-time | (amd64) crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by RyanGlScott): Ah, I didn't see #13418. In lieu of Trac, can you post the code somewhere else? Perhaps inline in a comment, or through a site like gist.github.com? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13417#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#13417: piResultTys1 -------------------------------------+------------------------------------- Reporter: ralf | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.2 Resolution: | Keywords: Operating System: Linux | Architecture: x86_64 Type of failure: Compile-time | (amd64) crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj): Yes please! We need that code :-). -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13417#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#13417: piResultTys1 -------------------------------------+------------------------------------- Reporter: ralf | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.2 Resolution: | Keywords: Operating System: Linux | Architecture: x86_64 Type of failure: Compile-time | (amd64) crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by ralf):
{-# LANGUAGE NPlusKPatterns #-}
module FactorialSequ where import Data.List
data Sequ1 a = D10 (Sequ2 (a, a)) | D11 a (Sequ2 (a, a)) | E1 deriving (Show)
data Sequ2 a = D20 (Sequ3 (a, a, a)) | D21 a (Sequ3 (a, a, a)) | D22 a a (Sequ3 (a, a, a)) | E2 deriving (Show)
data Sequ3 a = D30 (Sequ4 (a, a, a, a)) | D31 a (Sequ4 (a, a, a, a)) | D32 a a (Sequ4 (a, a, a, a)) | D33 a a a (Sequ4 (a, a, a, a)) | E3 deriving (Show)
data Sequ4 a = D40 (Sequ5 (a, a, a, a, a)) | D41 a (Sequ5 (a, a, a, a, a)) | D42 a a (Sequ5 (a, a, a, a, a)) | D43 a a a (Sequ5 (a, a, a, a, a)) | D44 a a a a (Sequ5 (a, a, a, a, a)) | E4 deriving (Show)
data Sequ5 a = D50 (Sequ6 (a, a, a, a, a, a)) | D51 a (Sequ6 (a, a, a, a, a, a)) | D52 a a (Sequ6 (a, a, a, a, a, a)) | D53 a a a (Sequ6 (a, a, a, a, a, a)) | D54 a a a a (Sequ6 (a, a, a, a, a, a)) | D55 a a a a a (Sequ6 (a, a, a, a, a, a)) | E5 deriving (Show)
data Sequ6 a = D60 (Sequ7 (a, a, a, a, a, a, a)) | D61 a (Sequ7 (a, a, a, a, a, a, a)) | D62 a a (Sequ7 (a, a, a, a, a, a, a)) | D63 a a a (Sequ7 (a, a, a, a, a, a, a)) | D64 a a a a (Sequ7 (a, a, a, a, a, a, a)) | D65 a a a a a (Sequ7 (a, a, a, a, a, a, a)) | D66 a a a a a a (Sequ7 (a, a, a, a, a, a, a)) | E6 deriving (Show)
data Sequ7 a = E7 deriving (Show)
ix2 (a0, a1) 0 = a0 ix2 (a0, a1) 1 = a1
ix3 (a0, a1, a2) 0 = a0 ix3 (a0, a1, a2) 1 = a1 ix3 (a0, a1, a2) 2 = a2
ix4 (a0, a1, a2, a3) 0 = a0 ix4 (a0, a1, a2, a3) 1 = a1 ix4 (a0, a1, a2, a3) 2 = a2 ix4 (a0, a1, a2, a3) 3 = a3
ix5 (a0, a1, a2, a3, a4) 0 = a0 ix5 (a0, a1, a2, a3, a4) 1 = a1 ix5 (a0, a1, a2, a3, a4) 2 = a2 ix5 (a0, a1, a2, a3, a4) 3 = a3 ix5 (a0, a1, a2, a3, a4) 4 = a4
ix6 (a0, a1, a2, a3, a4, a5) 0 = a0 ix6 (a0, a1, a2, a3, a4, a5) 1 = a1 ix6 (a0, a1, a2, a3, a4, a5) 2 = a2 ix6 (a0, a1, a2, a3, a4, a5) 3 = a3 ix6 (a0, a1, a2, a3, a4, a5) 4 = a4 ix6 (a0, a1, a2, a3, a4, a5) 5 = a5
ix7 (a0, a1, a2, a3, a4, a5, a6) 0 = a0 ix7 (a0, a1, a2, a3, a4, a5, a6) 1 = a1 ix7 (a0, a1, a2, a3, a4, a5, a6) 2 = a2 ix7 (a0, a1, a2, a3, a4, a5, a6) 3 = a3 ix7 (a0, a1, a2, a3, a4, a5, a6) 4 = a4 ix7 (a0, a1, a2, a3, a4, a5, a6) 5 = a5 ix7 (a0, a1, a2, a3, a4, a5, a6) 6 = a6
cons1 a0 (D10 s) = D11 a0 s cons1 a0 (D11 a1 s) = D10 (cons2 (a0, a1) s) cons1 a0 (E1) = D11 a0 E2
cons2 a0 (D20 s) = D21 a0 s cons2 a0 (D21 a1 s) = D22 a0 a1 s cons2 a0 (D22 a1 a2 s) = D20 (cons3 (a0, a1, a2) s) cons2 a0 (E2) = D21 a0 E3
cons3 a0 (D30 s) = D31 a0 s cons3 a0 (D31 a1 s) = D32 a0 a1 s cons3 a0 (D32 a1 a2 s) = D33 a0 a1 a2 s cons3 a0 (D33 a1 a2 a3 s) = D30 (cons4 (a0, a1, a2, a3) s) cons3 a0 (E3) = D31 a0 E4
cons4 a0 (D40 s) = D41 a0 s cons4 a0 (D41 a1 s) = D42 a0 a1 s cons4 a0 (D42 a1 a2 s) = D43 a0 a1 a2 s cons4 a0 (D43 a1 a2 a3 s) = D44 a0 a1 a2 a3 s cons4 a0 (D44 a1 a2 a3 a4 s) = D40 (cons5 (a0, a1, a2, a3, a4) s) cons4 a0 (E4) = D41 a0 E5
cons5 a0 (D50 s) = D51 a0 s cons5 a0 (D51 a1 s) = D52 a0 a1 s cons5 a0 (D52 a1 a2 s) = D53 a0 a1 a2 s cons5 a0 (D53 a1 a2 a3 s) = D54 a0 a1 a2 a3 s cons5 a0 (D54 a1 a2 a3 a4 s) = D55 a0 a1 a2 a3 a4 s cons5 a0 (D55 a1 a2 a3 a4 a5 s) = D50 (cons6 (a0, a1, a2, a3, a4, a5) s) cons5 a0 (E5) = D51 a0 E6
cons6 a0 (D60 s) = D61 a0 s cons6 a0 (D61 a1 s) = D62 a0 a1 s cons6 a0 (D62 a1 a2 s) = D63 a0 a1 a2 s cons6 a0 (D63 a1 a2 a3 s) = D64 a0 a1 a2 a3 s cons6 a0 (D64 a1 a2 a3 a4 s) = D65 a0 a1 a2 a3 a4 s cons6 a0 (D65 a1 a2 a3 a4 a5 s) = D66 a0 a1 a2 a3 a4 a5 s cons6 a0 (D66 a1 a2 a3 a4 a5 a6 s) = D60 (cons7 (a0, a1, a2, a3, a4, a5, a6) s) cons6 a0 (E6) = D61 a0 E7
cons7 a0 E7 = E7
lookup1 n (D10 s) = lookup2 (n `div` 2) s `ix2` (n `mod` 2) lookup1 0 (D11 a0 s) = a0 lookup1 (n + 1) (D11 a0 s) = lookup2 (n `div` 2) s `ix2` (n `mod` 2) lookup1 n (E1) = error "out of bounds"
lookup2 n (D20 s) = lookup3 (n `div` 3) s `ix3` (n `mod` 3) lookup2 0 (D21 a0 s) = a0 lookup2 (n + 1) (D21 a0 s) = lookup3 (n `div` 3) s `ix3` (n `mod` 3) lookup2 0 (D22 a0 a1 s) = a0 lookup2 1 (D22 a0 a1 s) = a1 lookup2 (n + 2) (D22 a0 a1 s) = lookup3 (n `div` 3) s `ix3` (n `mod` 3) lookup2 n (E2) = error "out of bounds"
lookup3 n (E3) = error "out of bounds"
lookup3 n (D30 s) = lookup4 (n `div` 4) s `ix4` (n `mod` 4) lookup3 0 (D31 a0 s) = a0 lookup3 (n + 1) (D31 a0 s) = lookup4 (n `div` 4) s `ix4` (n `mod` 4) lookup3 0 (D32 a0 a1 s) = a0 lookup3 1 (D32 a0 a1 s) = a1 lookup3 (n + 2) (D32 a0 a1 s) = lookup4 (n `div` 4) s `ix4` (n `mod` 4) lookup3 0 (D33 a0 a1 a2 s) = a0 lookup3 1 (D33 a0 a1 a2 s) = a1 lookup3 2 (D33 a0 a1 a2 s) = a2 lookup3 (n + 3) (D33 a0 a1 a2 s) = lookup4 (n `div` 4) s `ix4` (n `mod`
lookup4 0 (D44 a0 a1 a2 a3 s) = a0 lookup4 1 (D44 a0 a1 a2 a3 s) = a1 lookup4 2 (D44 a0 a1 a2 a3 s) = a2 lookup4 3 (D44 a0 a1 a2 a3 s) = a3 lookup4 (n + 4) (D44 a0 a1 a2 a3 s) = lookup5 (n `div` 5) s `ix5` (n `mod` 5)
lookup4 n (D40 s) = lookup5 (n `div` 5) s `ix5` (n `mod` 5) lookup4 0 (D41 a0 s) = a0 lookup4 (n + 1) (D41 a0 s) = lookup5 (n `div` 5) s `ix5` (n `mod` 5) lookup4 0 (D42 a0 a1 s) = a0 lookup4 1 (D42 a0 a1 s) = a1 lookup4 (n + 2) (D42 a0 a1 s) = lookup5 (n `div` 5) s `ix5` (n `mod` 5) lookup4 0 (D43 a0 a1 a2 s) = a0 lookup4 1 (D43 a0 a1 a2 s) = a1 lookup4 2 (D43 a0 a1 a2 s) = a2 lookup4 (n + 3) (D43 a0 a1 a2 s) = lookup5 (n `div` 5) s `ix5` (n `mod`
lookup5 0 (D54 a0 a1 a2 a3 s) = a0 lookup5 1 (D54 a0 a1 a2 a3 s) = a1 lookup5 2 (D54 a0 a1 a2 a3 s) = a2 lookup5 3 (D54 a0 a1 a2 a3 s) = a3 lookup5 (n + 4) (D54 a0 a1 a2 a3 s) = lookup6 (n `div` 6) s `ix6` (n `mod` 6) lookup5 0 (D55 a0 a1 a2 a3 a4 s) = a0 lookup5 1 (D55 a0 a1 a2 a3 a4 s) = a1 lookup5 2 (D55 a0 a1 a2 a3 a4 s) = a2 lookup5 3 (D55 a0 a1 a2 a3 a4 s) = a3 lookup5 4 (D55 a0 a1 a2 a3 a4 s) = a4 lookup5 (n + 5) (D55 a0 a1 a2 a3 a4 s) = lookup6 (n `div` 6) s `ix6` (n `mod` 6)
lookup5 n (D50 s) = lookup6 (n `div` 6) s `ix6` (n `mod` 6) lookup5 0 (D51 a0 s) = a0 lookup5 (n + 1) (D51 a0 s) = lookup6 (n `div` 6) s `ix6` (n `mod` 6) lookup5 0 (D52 a0 a1 s) = a0 lookup5 1 (D52 a0 a1 s) = a1 lookup5 (n + 2) (D52 a0 a1 s) = lookup6 (n `div` 6) s `ix6` (n `mod` 6) lookup5 0 (D53 a0 a1 a2 s) = a0 lookup5 1 (D53 a0 a1 a2 s) = a1 lookup5 2 (D53 a0 a1 a2 s) = a2 lookup5 (n + 3) (D53 a0 a1 a2 s) = lookup6 (n `div` 6) s `ix6` (n `mod`
lookup6 0 (D64 a0 a1 a2 a3 s) = a0 lookup6 1 (D64 a0 a1 a2 a3 s) = a1 lookup6 2 (D64 a0 a1 a2 a3 s) = a2 lookup6 3 (D64 a0 a1 a2 a3 s) = a3 lookup6 (n + 4) (D64 a0 a1 a2 a3 s) = lookup7 (n `div` 7) s `ix7` (n `mod` 7) lookup6 0 (D65 a0 a1 a2 a3 a4 s) = a0 lookup6 1 (D65 a0 a1 a2 a3 a4 s) = a1 lookup6 2 (D65 a0 a1 a2 a3 a4 s) = a2 lookup6 3 (D65 a0 a1 a2 a3 a4 s) = a3 lookup6 4 (D65 a0 a1 a2 a3 a4 s) = a4 lookup6 (n + 5) (D65 a0 a1 a2 a3 a4 s) = lookup7 (n `div` 7) s `ix7` (n `mod` 7) lookup6 0 (D66 a0 a1 a2 a3 a4 a5 s) = a0 lookup6 1 (D66 a0 a1 a2 a3 a4 a5 s) = a1 lookup6 2 (D66 a0 a1 a2 a3 a4 a5 s) = a2 lookup6 3 (D66 a0 a1 a2 a3 a4 a5 s) = a3 lookup6 4 (D66 a0 a1 a2 a3 a4 a5 s) = a4 lookup6 5 (D66 a0 a1 a2 a3 a4 a5 s) = a5 lookup6 (n + 6) (D66 a0 a1 a2 a3 a4 a5 s) = lookup7 (n `div` 7) s `ix7` (n `mod` 7)
lookup6 n (D60 s) = lookup7 (n `div` 7) s `ix7` (n `mod` 7) lookup6 0 (D61 a0 s) = a0 lookup6 (n + 1) (D61 a0 s) = lookup7 (n `div` 7) s `ix7` (n `mod` 7) lookup6 0 (D62 a0 a1 s) = a0 lookup6 1 (D62 a0 a1 s) = a1 lookup6 (n + 2) (D62 a0 a1 s) = lookup7 (n `div` 7) s `ix7` (n `mod` 7) lookup6 0 (D63 a0 a1 a2 s) = a0 lookup6 1 (D63 a0 a1 a2 s) = a1 lookup6 2 (D63 a0 a1 a2 s) = a2 lookup6 (n + 3) (D63 a0 a1 a2 s) = lookup7 (n `div` 7) s `ix7` (n `mod`
lookup7 n s = error "out of bounds"
-- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13417#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#13417: piResultTys1 -------------------------------------+------------------------------------- Reporter: ralf | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.2 Resolution: | Keywords: Operating System: Linux | Architecture: x86_64 Type of failure: Compile-time | (amd64) crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by ralf): no idea how to turn the formatting off; hope that works for you -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13417#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#13417: piResultTys1 -------------------------------------+------------------------------------- Reporter: ralf | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.2 Resolution: | Keywords: Operating System: Linux | Architecture: x86_64 Type of failure: Compile-time | (amd64) crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by mpickering): {{{#!hs {-# LANGUAGE NPlusKPatterns #-} module FactorialSequ where import Data.List data Sequ1 a = D10 (Sequ2 (a, a)) | D11 a (Sequ2 (a, a)) | E1 deriving (Show) data Sequ2 a = D20 (Sequ3 (a, a, a)) | D21 a (Sequ3 (a, a, a)) | D22 a a (Sequ3 (a, a, a)) | E2 deriving (Show) data Sequ3 a = D30 (Sequ4 (a, a, a, a)) | D31 a (Sequ4 (a, a, a, a)) | D32 a a (Sequ4 (a, a, a, a)) | D33 a a a (Sequ4 (a, a, a, a)) | E3 deriving (Show) data Sequ4 a = D40 (Sequ5 (a, a, a, a, a)) | D41 a (Sequ5 (a, a, a, a, a)) | D42 a a (Sequ5 (a, a, a, a, a)) | D43 a a a (Sequ5 (a, a, a, a, a)) | D44 a a a a (Sequ5 (a, a, a, a, a)) | E4 deriving (Show) data Sequ5 a = D50 (Sequ6 (a, a, a, a, a, a)) | D51 a (Sequ6 (a, a, a, a, a, a)) | D52 a a (Sequ6 (a, a, a, a, a, a)) | D53 a a a (Sequ6 (a, a, a, a, a, a)) | D54 a a a a (Sequ6 (a, a, a, a, a, a)) | D55 a a a a a (Sequ6 (a, a, a, a, a, a)) | E5 deriving (Show) data Sequ6 a = D60 (Sequ7 (a, a, a, a, a, a, a)) | D61 a (Sequ7 (a, a, a, a, a, a, a)) | D62 a a (Sequ7 (a, a, a, a, a, a, a)) | D63 a a a (Sequ7 (a, a, a, a, a, a, a)) | D64 a a a a (Sequ7 (a, a, a, a, a, a, a)) | D65 a a a a a (Sequ7 (a, a, a, a, a, a, a)) | D66 a a a a a a (Sequ7 (a, a, a, a, a, a, a)) | E6 deriving (Show) data Sequ7 a = E7 deriving (Show) ix2 (a0, a1) 0 = a0 ix2 (a0, a1) 1 = a1 ix3 (a0, a1, a2) 0 = a0 ix3 (a0, a1, a2) 1 = a1 ix3 (a0, a1, a2) 2 = a2 ix4 (a0, a1, a2, a3) 0 = a0 ix4 (a0, a1, a2, a3) 1 = a1 ix4 (a0, a1, a2, a3) 2 = a2 ix4 (a0, a1, a2, a3) 3 = a3 ix5 (a0, a1, a2, a3, a4) 0 = a0 ix5 (a0, a1, a2, a3, a4) 1 = a1 ix5 (a0, a1, a2, a3, a4) 2 = a2 ix5 (a0, a1, a2, a3, a4) 3 = a3 ix5 (a0, a1, a2, a3, a4) 4 = a4 ix6 (a0, a1, a2, a3, a4, a5) 0 = a0 ix6 (a0, a1, a2, a3, a4, a5) 1 = a1 ix6 (a0, a1, a2, a3, a4, a5) 2 = a2 ix6 (a0, a1, a2, a3, a4, a5) 3 = a3 ix6 (a0, a1, a2, a3, a4, a5) 4 = a4 ix6 (a0, a1, a2, a3, a4, a5) 5 = a5 ix7 (a0, a1, a2, a3, a4, a5, a6) 0 = a0 ix7 (a0, a1, a2, a3, a4, a5, a6) 1 = a1 ix7 (a0, a1, a2, a3, a4, a5, a6) 2 = a2 ix7 (a0, a1, a2, a3, a4, a5, a6) 3 = a3 ix7 (a0, a1, a2, a3, a4, a5, a6) 4 = a4 ix7 (a0, a1, a2, a3, a4, a5, a6) 5 = a5 ix7 (a0, a1, a2, a3, a4, a5, a6) 6 = a6 cons1 a0 (D10 s) = D11 a0 s cons1 a0 (D11 a1 s) = D10 (cons2 (a0, a1) s) cons1 a0 (E1) = D11 a0 E2 cons2 a0 (D20 s) = D21 a0 s cons2 a0 (D21 a1 s) = D22 a0 a1 s cons2 a0 (D22 a1 a2 s) = D20 (cons3 (a0, a1, a2) s) cons2 a0 (E2) = D21 a0 E3 cons3 a0 (D30 s) = D31 a0 s cons3 a0 (D31 a1 s) = D32 a0 a1 s cons3 a0 (D32 a1 a2 s) = D33 a0 a1 a2 s cons3 a0 (D33 a1 a2 a3 s) = D30 (cons4 (a0, a1, a2, a3) s) cons3 a0 (E3) = D31 a0 E4 cons4 a0 (D40 s) = D41 a0 s cons4 a0 (D41 a1 s) = D42 a0 a1 s cons4 a0 (D42 a1 a2 s) = D43 a0 a1 a2 s cons4 a0 (D43 a1 a2 a3 s) = D44 a0 a1 a2 a3 s cons4 a0 (D44 a1 a2 a3 a4 s) = D40 (cons5 (a0, a1, a2, a3, a4) s) cons4 a0 (E4) = D41 a0 E5 cons5 a0 (D50 s) = D51 a0 s cons5 a0 (D51 a1 s) = D52 a0 a1 s cons5 a0 (D52 a1 a2 s) = D53 a0 a1 a2 s cons5 a0 (D53 a1 a2 a3 s) = D54 a0 a1 a2 a3 s cons5 a0 (D54 a1 a2 a3 a4 s) = D55 a0 a1 a2 a3 a4 s cons5 a0 (D55 a1 a2 a3 a4 a5 s) = D50 (cons6 (a0, a1, a2, a3, a4, a5) s) cons5 a0 (E5) = D51 a0 E6 cons6 a0 (D60 s) = D61 a0 s cons6 a0 (D61 a1 s) = D62 a0 a1 s cons6 a0 (D62 a1 a2 s) = D63 a0 a1 a2 s cons6 a0 (D63 a1 a2 a3 s) = D64 a0 a1 a2 a3 s cons6 a0 (D64 a1 a2 a3 a4 s) = D65 a0 a1 a2 a3 a4 s cons6 a0 (D65 a1 a2 a3 a4 a5 s) = D66 a0 a1 a2 a3 a4 a5 s cons6 a0 (D66 a1 a2 a3 a4 a5 a6 s) = D60 (cons7 (a0, a1, a2, a3, a4, a5, a6) s) cons6 a0 (E6) = D61 a0 E7 cons7 a0 E7 = E7 lookup1 n (D10 s) = lookup2 (n `div` 2) s `ix2` (n `mod` 2) lookup1 0 (D11 a0 s) = a0 lookup1 (n + 1) (D11 a0 s) = lookup2 (n `div` 2) s `ix2` (n `mod` 2) lookup1 n (E1) = error "out of bounds" lookup2 n (D20 s) = lookup3 (n `div` 3) s `ix3` (n `mod` 3) lookup2 0 (D21 a0 s) = a0 lookup2 (n + 1) (D21 a0 s) = lookup3 (n `div` 3) s `ix3` (n `mod` 3) lookup2 0 (D22 a0 a1 s) = a0 lookup2 1 (D22 a0 a1 s) = a1 lookup2 (n + 2) (D22 a0 a1 s) = lookup3 (n `div` 3) s `ix3` (n `mod` 3) lookup2 n (E2) = error "out of bounds" lookup3 n (D30 s) = lookup4 (n `div` 4) s `ix4` (n `mod` 4) lookup3 0 (D31 a0 s) = a0 lookup3 (n + 1) (D31 a0 s) = lookup4 (n `div` 4) s `ix4` (n `mod` 4) lookup3 0 (D32 a0 a1 s) = a0 lookup3 1 (D32 a0 a1 s) = a1 lookup3 (n + 2) (D32 a0 a1 s) = lookup4 (n `div` 4) s `ix4` (n `mod` 4) lookup3 0 (D33 a0 a1 a2 s) = a0 lookup3 1 (D33 a0 a1 a2 s) = a1 lookup3 2 (D33 a0 a1 a2 s) = a2 lookup3 (n + 3) (D33 a0 a1 a2 s) = lookup4 (n `div` 4) s `ix4` (n `mod` 4) lookup3 n (E3) = error "out of bounds" lookup4 n (D40 s) = lookup5 (n `div` 5) s `ix5` (n `mod` 5) lookup4 0 (D41 a0 s) = a0 lookup4 (n + 1) (D41 a0 s) = lookup5 (n `div` 5) s `ix5` (n `mod` 5) lookup4 0 (D42 a0 a1 s) = a0 lookup4 1 (D42 a0 a1 s) = a1 lookup4 (n + 2) (D42 a0 a1 s) = lookup5 (n `div` 5) s `ix5` (n `mod` 5) lookup4 0 (D43 a0 a1 a2 s) = a0 lookup4 1 (D43 a0 a1 a2 s) = a1 lookup4 2 (D43 a0 a1 a2 s) = a2 lookup4 (n + 3) (D43 a0 a1 a2 s) = lookup5 (n `div` 5) s `ix5` (n `mod` 5) lookup4 0 (D44 a0 a1 a2 a3 s) = a0 lookup4 1 (D44 a0 a1 a2 a3 s) = a1 lookup4 2 (D44 a0 a1 a2 a3 s) = a2 lookup4 3 (D44 a0 a1 a2 a3 s) = a3 lookup4 (n + 4) (D44 a0 a1 a2 a3 s) = lookup5 (n `div` 5) s `ix5` (n `mod` 5) lookup5 n (D50 s) = lookup6 (n `div` 6) s `ix6` (n `mod` 6) lookup5 0 (D51 a0 s) = a0 lookup5 (n + 1) (D51 a0 s) = lookup6 (n `div` 6) s `ix6` (n `mod` 6) lookup5 0 (D52 a0 a1 s) = a0 lookup5 1 (D52 a0 a1 s) = a1 lookup5 (n + 2) (D52 a0 a1 s) = lookup6 (n `div` 6) s `ix6` (n `mod` 6) lookup5 0 (D53 a0 a1 a2 s) = a0 lookup5 1 (D53 a0 a1 a2 s) = a1 lookup5 2 (D53 a0 a1 a2 s) = a2 lookup5 (n + 3) (D53 a0 a1 a2 s) = lookup6 (n `div` 6) s `ix6` (n `mod` 6) lookup5 0 (D54 a0 a1 a2 a3 s) = a0 lookup5 1 (D54 a0 a1 a2 a3 s) = a1 lookup5 2 (D54 a0 a1 a2 a3 s) = a2 lookup5 3 (D54 a0 a1 a2 a3 s) = a3 lookup5 (n + 4) (D54 a0 a1 a2 a3 s) = lookup6 (n `div` 6) s `ix6` (n `mod` 6) lookup5 0 (D55 a0 a1 a2 a3 a4 s) = a0 lookup5 1 (D55 a0 a1 a2 a3 a4 s) = a1 lookup5 2 (D55 a0 a1 a2 a3 a4 s) = a2 lookup5 3 (D55 a0 a1 a2 a3 a4 s) = a3 lookup5 4 (D55 a0 a1 a2 a3 a4 s) = a4 lookup5 (n + 5) (D55 a0 a1 a2 a3 a4 s) = lookup6 (n `div` 6) s `ix6` (n `mod` 6) lookup6 n (D60 s) = lookup7 (n `div` 7) s `ix7` (n `mod` 7) lookup6 0 (D61 a0 s) = a0 lookup6 (n + 1) (D61 a0 s) = lookup7 (n `div` 7) s `ix7` (n `mod` 7) lookup6 0 (D62 a0 a1 s) = a0 lookup6 1 (D62 a0 a1 s) = a1 lookup6 (n + 2) (D62 a0 a1 s) = lookup7 (n `div` 7) s `ix7` (n `mod` 7) lookup6 0 (D63 a0 a1 a2 s) = a0 lookup6 1 (D63 a0 a1 a2 s) = a1 lookup6 2 (D63 a0 a1 a2 s) = a2 lookup6 (n + 3) (D63 a0 a1 a2 s) = lookup7 (n `div` 7) s `ix7` (n `mod` 7) lookup6 0 (D64 a0 a1 a2 a3 s) = a0 lookup6 1 (D64 a0 a1 a2 a3 s) = a1 lookup6 2 (D64 a0 a1 a2 a3 s) = a2 lookup6 3 (D64 a0 a1 a2 a3 s) = a3 lookup6 (n + 4) (D64 a0 a1 a2 a3 s) = lookup7 (n `div` 7) s `ix7` (n `mod` 7) lookup6 0 (D65 a0 a1 a2 a3 a4 s) = a0 lookup6 1 (D65 a0 a1 a2 a3 a4 s) = a1 lookup6 2 (D65 a0 a1 a2 a3 a4 s) = a2 lookup6 3 (D65 a0 a1 a2 a3 a4 s) = a3 lookup6 4 (D65 a0 a1 a2 a3 a4 s) = a4 lookup6 (n + 5) (D65 a0 a1 a2 a3 a4 s) = lookup7 (n `div` 7) s `ix7` (n `mod` 7) lookup6 0 (D66 a0 a1 a2 a3 a4 a5 s) = a0 lookup6 1 (D66 a0 a1 a2 a3 a4 a5 s) = a1 lookup6 2 (D66 a0 a1 a2 a3 a4 a5 s) = a2 lookup6 3 (D66 a0 a1 a2 a3 a4 a5 s) = a3 lookup6 4 (D66 a0 a1 a2 a3 a4 a5 s) = a4 lookup6 5 (D66 a0 a1 a2 a3 a4 a5 s) = a5 lookup6 (n + 6) (D66 a0 a1 a2 a3 a4 a5 s) = lookup7 (n `div` 7) s `ix7` (n `mod` 7) lookup7 n s = error "out of bounds" }}} It panics at -O2 with 8.0.2 but doesn't panic with HEAD. Does anyone know which ticket fixed this? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13417#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#13417: piResultTys1
-------------------------------------+-------------------------------------
Reporter: ralf | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.0.2
Resolution: | Keywords:
Operating System: Linux | Architecture: x86_64
Type of failure: Compile-time | (amd64)
crash or panic | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by simonpj):
Here's a simpler test case
{{{
data T a = E7
cons7 :: T a -> T b
cons7 E7 = E7
}}}
Amazingly, this crashes 8.0.2, because of this egregious bug in
`SimplUtils.mkCase1`:
{{{
check_eq (Var v) (DataAlt con) [] = v == dataConWorkId con
-- Optimisation only
...
check_eq rhs (DataAlt con) args = cheapEqExpr' tickishFloatable
rhs $
mkConApp con (arg_tys ++
varsToCoreExprs
args)
}}}
The first of these equations ("optimisation only") is only equivalent to
the second if `arg_tys` is empty, which it isn't in this case.
This bug has been there since I introduced it in Nov 2011:
{{{
commit 02ac2974ce8e537372bff8d9e0a6efb461ed2c59
Author: Simon Peyton Jones

#13417: piResultTys1
-------------------------------------+-------------------------------------
Reporter: ralf | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.0.2
Resolution: | Keywords:
Operating System: Linux | Architecture: x86_64
Type of failure: Compile-time | (amd64)
crash or panic | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by Simon Peyton Jones

#13417: piResultTys1 -------------------------------------+------------------------------------- Reporter: ralf | Owner: (none) Type: bug | Status: merge Priority: normal | Milestone: Component: Compiler | Version: 8.0.2 Resolution: | Keywords: Operating System: Linux | Architecture: x86_64 Type of failure: Compile-time | (amd64) crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by simonpj): * status: new => merge Comment: Thanks for a test case. Amazing bug! -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13417#comment:10 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#13417: piResultTys1 -------------------------------------+------------------------------------- Reporter: ralf | Owner: (none) Type: bug | Status: merge Priority: normal | Milestone: 8.0.3 Component: Compiler | Version: 8.0.2 Resolution: | Keywords: Operating System: Linux | Architecture: x86_64 Type of failure: Compile-time | (amd64) crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by bgamari): * milestone: => 8.0.3 Old description:
Error provoked by attached H98 program (which is generated by a program); compiles fine without optimizations; compilation with -O2 crashes:
$ ghc --make -O2 FactorialSequ.lhs [1 of 1] Compiling FactorialSequ ( FactorialSequ.lhs, FactorialSequ.o ) ghc: panic! (the 'impossible' happened) (GHC version 8.0.2 for x86_64-unknown-linux): piResultTys1 Sequ7 t_a2zl [a_a2zm]
New description: Error provoked by attached H98 program (which is generated by a program); compiles fine without optimizations; compilation with -O2 crashes: {{{ $ ghc --make -O2 FactorialSequ.lhs [1 of 1] Compiling FactorialSequ ( FactorialSequ.lhs, FactorialSequ.o ) ghc: panic! (the 'impossible' happened) (GHC version 8.0.2 for x86_64-unknown-linux): piResultTys1 Sequ7 t_a2zl [a_a2zm] }}} -- -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13417#comment:11 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#13417: piResultTys1 -------------------------------------+------------------------------------- Reporter: ralf | Owner: (none) Type: bug | Status: merge Priority: normal | Milestone: 8.0.3 Component: Compiler | Version: 8.0.2 Resolution: | Keywords: Operating System: Linux | Architecture: x86_64 Type of failure: Compile-time | (amd64) crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by bgamari): Merged to `ghc-8.0` as d2d13a4f6750e30389552974bd7465712d522735, `ghc-8.2` as dfd8f29eced6c2750b68bfa5d076306d0688eb09. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13417#comment:12 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#13417: piResultTys1 -------------------------------------+------------------------------------- Reporter: ralf | Owner: (none) Type: bug | Status: closed Priority: normal | Milestone: 8.0.3 Component: Compiler | Version: 8.0.2 Resolution: fixed | Keywords: Operating System: Linux | Architecture: x86_64 Type of failure: Compile-time | (amd64) crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by RyanGlScott): * status: merge => closed * resolution: => fixed Comment: If I'm reading this correctly, this has been fixed and merged, so I'll close this ticket. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13417#comment:13 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC