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

`-fspec-eval-dictfun` can speculate bottoms if you hide them within a module loop
```hs {-# LANGUAGE UndecidableSuperClasses #-} module Ty where data T a = MkT a class CB a => CA a where opA :: a -> Int class CA a => CB a where opB :: a -> Int ``` ```hs {-# LANGUAGE FlexibleInstances, UndecidableInstances #-} module Callee where -- Callee.hs-boot import Ty instance CB a => CB (T a) instance CB Int ``` ```hs {-# LANGUAGE UndecidableInstances, FlexibleInstances, GADTs #-} {-# LANGUAGE ScopedTypeVariables #-} module Mid where import Ty import {-# SOURCE #-} Callee instance CB a => CA (T a) where opA _ = 1 instance CA Int where opA _ = 9 data Dict c where Dict :: c => Dict c {-# NOINLINE keep #-} keep :: [Dict c] -> Int keep xs = length xs + 41 {-# NOINLINE g #-} g :: forall a. CB a => a -> Int g _ = keep [Dict :: Dict (CA (T a))] ``` ```hs {-# LANGUAGE UndecidableInstances, FlexibleInstances #-} module Callee where -- Callee.hs import Ty import Mid instance CB a => CB (T a) where opB _ = 2 instance CB Int where opB _ = 8 ``` ```hs module Main where import Mid import Callee () main = print (g (1 :: Int)) ``` ```bash $ ghc --make -O -fspec-eval-dictfun Main.hs && ./Main <hangs> ``` We take care not to evaluate things that might be bottom, like the looping dictionary group at the start, but our analysis is defeated by boot files.
issue