Make `seq#` a magic Id and inline it in CorePrep (#24124)
We can save much code and explanation in Tag Inference and StgToCmm by making
seq# a known-key Magic Id in GHC.Internal.IO and inline this definition in
CorePrep. See the updated Note [seq# magic].
I also implemented a new Note [Flatten case-bind] to get better code for
otherwise nested case scrutinees.
I renamed the contructors of ArgInfo to use an AI prefix in order to
resolve the clash between type CpeApp = CoreExpr and the data constructor of
ArgInfo, as well as fixed typos in Note [CorePrep invariants].
Fixes #24252 (closed) and #24124 (closed).
Also !9874 (closed) currently regresses T15226 because there we get a stupid seq# (I# (x +# 3#)) which CorePrep does not eliminate. With this patch, all allocation should vanish.
Edited by Sebastian Graf