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

"Entered absent arg" due to specialiser not considering the stable unfolding
Similar to https://gitlab.haskell.org/ghc/ghc/-/work_items/26416 but in the specialiser instead of the demand analyser ```hs {-# LANGUAGE RankNTypes #-} module Lib (g) where {-# NOINLINE consume #-} consume :: Int -> Int consume n = n `seq` 0 {-# RULES "consume" [~1] forall n. consume n = 0 #-} {-# INLINE [1] f #-} f :: forall a. Int -> Show a => a -> String f n y = show y ++ replicate (consume n) '!' {-# NOINLINE g #-} g :: Bool -> String g b = f 7 b ++ "." ``` ```hs module Main where import Lib main = putStrLn (g True) ``` ```bash $ ghc --make -O Main.hs && ./Main Main: internal error: Oops! Entered absent arg Arg: ds Type: Int In module `Lib' ``` - `f` gets a stable unfolding due to the `INLINE` pragma - the RHS is simplified before phase 1 and the "consume" rule fires, dropping `n` - The unfolding is simplified in phase 1, the rule does not fire and it keep the `seq n`. - `specHeader` looks at the RHS' binders and checks `isDeadBinder`, and `n` is dead in the RHS, so it makes an absent filler - However, it then applies the absent filler to the unfolding template, not to the RHS - The stable unfolding forces the absent filler Fix: check the binders of the stable unfolding instead of the RHS in `specHeader`
issue