Admin message

Due to a large amount of spam we do not allow new users to create repositories, they are "external" users. If you are a new user and want to create a repository, for example for forking GHC, open a new issue on ghc/ghc using the "get-verified" issue template

Panic with `-O -prof -fprof-auto` (regression in GHC 9.12)
## Summary On GHC 9.12 (tested 9.12.2), compiling the following file (which was produced by Agda and then shrunk manually) panics with optimization and profiling. Could not reproduce on GHC 9.10 and older (tried back to 9.2). Downstream issue: https://github.com/agda/agda/issues/7869 ## Steps to reproduce Call to ghc at the beginning of this file: ```haskell -- ghc -O -prof -fprof-auto {- <no location info>: error: panic! (the 'impossible' happened) GHC version 9.12.2: getStgArgFromTrivialArg case sat_s1qM @(*) @Any @(ZonkAny 67) of { UnsafeRefl co7_s1r4 -> ww2_s1qK `cast` (Sub (Sym co7_s1r4) ; SelCo:Fun(arg) (SelCo:Fun(res) (Sub co6_s1qU)) :: Any ~R# [ZonkAny 68]) } Call stack: CallStack (from HasCallStack): callStackDoc, called at compiler/GHC/Utils/Panic.hs:190:37 in ghc-9.12.2-ea3d:GHC.Utils.Panic pprPanic, called at compiler/GHC/CoreToStg.hs:586:13 in ghc-9.12.2-ea3d:GHC.CoreToStg Please report this as a GHC bug: https://www.haskell.org/ghc/reportabug -} {-# OPTIONS_GHC -Wno-overlapping-patterns #-} module OfSemiring where import Prelude ( error ) import GHC.Exts ( Any ) import Unsafe.Coerce ( unsafeCoerce ) erased :: a erased = unsafeCoerce (\ _ -> erased) mazUnreachableError :: a mazUnreachableError = error ("Agda: unreachable code reached.") -- OfSemiring.Sigma data Sigma = C_pair Any Any -- OfSemiring.Nat data Nat = C_zero | C_suc Nat -- OfSemiring.Id data Id = C_refl -- OfSemiring.append append :: [Any] -> [Any] -> [Any] append v0 v1 = case unsafeCoerce v0 of [] -> unsafeCoerce v1 (:) v2 v3 -> unsafeCoerce (:) (unsafeCoerce v2) (unsafeCoerce append (unsafeCoerce v3) (unsafeCoerce v1)) _ -> mazUnreachableError -- OfSemiring.foldr foldr :: (Any -> Any -> Any) -> Any -> [Any] -> Any foldr v0 v1 v2 = case unsafeCoerce v2 of [] -> unsafeCoerce v1 (:) v3 v4 -> unsafeCoerce v0 v3 (unsafeCoerce foldr (unsafeCoerce v0) (unsafeCoerce v1) (unsafeCoerce v4)) _ -> mazUnreachableError -- OfSemiring.length length :: [Any] -> Nat length = unsafeCoerce foldr (unsafeCoerce (\ v0 -> unsafeCoerce C_suc)) (unsafeCoerce C_zero) -- OfSemiring.Semiring data Semiring = C_semiring (Any -> Any -> Any) (Any -> Any -> Any) Any (Any -> Any -> Any -> Any -> Any -> Any) -- OfSemiring.Semiring.plus plus :: Semiring -> Any -> Any -> Any plus v0 = case unsafeCoerce v0 of C_semiring v3 v4 v5 v6 -> unsafeCoerce v3 _ -> mazUnreachableError -- OfSemiring.Semiring.times times :: Semiring -> Any -> Any -> Any times v0 = case unsafeCoerce v0 of C_semiring v3 v4 v5 v6 -> unsafeCoerce v4 _ -> mazUnreachableError -- OfSemiring.Semiring.zeroElem zeroElem :: Semiring -> Any zeroElem v0 = case unsafeCoerce v0 of C_semiring v3 v4 v5 v6 -> unsafeCoerce v5 _ -> mazUnreachableError -- OfSemiring.Semiring.transEq transEq :: Semiring -> Any -> Any -> Any -> Any -> Any -> Any transEq v0 = case unsafeCoerce v0 of C_semiring v3 v4 v5 v6 -> unsafeCoerce v6 _ -> mazUnreachableError -- OfSemiring._.SemiringList.zipWithTimes zipWithTimes :: Semiring -> [Any] -> [Any] -> [Any] zipWithTimes v0 v1 v2 = let v3 = unsafeCoerce [] in unsafeCoerce (case unsafeCoerce v1 of (:) v4 v5 -> case unsafeCoerce v2 of (:) v6 v7 -> unsafeCoerce (:) (unsafeCoerce times v0 v4 v6) (unsafeCoerce zipWithTimes (unsafeCoerce v0) (unsafeCoerce v5) (unsafeCoerce v7)) _ -> unsafeCoerce v3 _ -> unsafeCoerce v3) -- OfSemiring._.SemiringList.dotProduct dotProduct :: Semiring -> [Any] -> [Any] -> Any dotProduct v0 v1 v2 = unsafeCoerce foldr (unsafeCoerce plus (unsafeCoerce v0)) (unsafeCoerce zeroElem (unsafeCoerce v0)) (unsafeCoerce zipWithTimes (unsafeCoerce v0) (unsafeCoerce v1) (unsafeCoerce v2)) -- OfSemiring._.SemiringList.subListCons subListCons :: Semiring -> Any -> [Any] -> Any -> Sigma -> Sigma subListCons v0 v1 v2 v3 v4 = case unsafeCoerce v4 of C_pair v5 v6 -> case unsafeCoerce v6 of C_pair v7 v8 -> unsafeCoerce C_pair (unsafeCoerce (:) (unsafeCoerce zeroElem (unsafeCoerce v0)) (unsafeCoerce v5)) (unsafeCoerce C_pair erased (unsafeCoerce equal (unsafeCoerce v0) (unsafeCoerce v1) (unsafeCoerce v2) (unsafeCoerce v3) (unsafeCoerce v5) (unsafeCoerce v8))) _ -> mazUnreachableError _ -> mazUnreachableError -- OfSemiring._.SemiringList._.qsbs qsbs :: Semiring -> [Any] -> [Any] -> Any qsbs v0 v1 v2 = unsafeCoerce dotProduct (unsafeCoerce v0) (unsafeCoerce v2) (unsafeCoerce v1) -- OfSemiring._.SemiringList._.p1 p1 = error "MAlonzo Runtime Error: postulate evaluated: OfSemiring._.SemiringList._.p1" -- OfSemiring._.SemiringList._.p2 p2 = error "MAlonzo Runtime Error: postulate evaluated: OfSemiring._.SemiringList._.p2" -- OfSemiring._.SemiringList._.eq' equal :: Semiring -> Any -> [Any] -> Any -> [Any] -> Any -> Any equal v0 v1 v2 v3 v4 v5 = unsafeCoerce transEq v0 v3 (unsafeCoerce plus v0 (zeroElem (unsafeCoerce v0)) (unsafeCoerce qsbs (unsafeCoerce v0) (unsafeCoerce v2) (unsafeCoerce v4))) (dotProduct (unsafeCoerce v0) (unsafeCoerce (:) (unsafeCoerce zeroElem (unsafeCoerce v0)) (unsafeCoerce v4)) (unsafeCoerce (:) (unsafeCoerce v1) (unsafeCoerce v2))) (unsafeCoerce transEq v0 v3 (dotProduct (unsafeCoerce v0) (unsafeCoerce v4) (unsafeCoerce v2)) (unsafeCoerce plus v0 (zeroElem (unsafeCoerce v0)) (unsafeCoerce qsbs (unsafeCoerce v0) (unsafeCoerce v2) (unsafeCoerce v4))) v5 (unsafeCoerce p1 v0 v1 v2 v3 v4 erased v5)) (unsafeCoerce p2 v0 v1 v2 v3 v4 erased v5) -- OfSemiring._.SemiringList.testSubList testSubList :: Semiring -> [Any] -> [Any] -> Any -> Sigma -> Sigma testSubList v0 v1 v2 v3 v4 = case unsafeCoerce v2 of [] -> unsafeCoerce v4 (:) v5 v6 -> unsafeCoerce subListCons (unsafeCoerce v0) (unsafeCoerce v5) (unsafeCoerce append (unsafeCoerce v6) (unsafeCoerce v1)) (unsafeCoerce v3) (unsafeCoerce testSubList (unsafeCoerce v0) (unsafeCoerce v1) (unsafeCoerce v6) (unsafeCoerce v3) (unsafeCoerce v4)) _ -> mazUnreachableError ``` ## Expected behavior Compile without error. ## Environment * GHC version used: 9.12.2 Optional: * Operating System: macOS * System Architecture: aarch64
issue