Sebastian Graf

@sgraf

Joined on Feb 11, 2019

  • (https://docs.google.com/spreadsheets/d/1o05HVgAnsSjuLNFyDZ78DJPIirw664i7i48g6aHan5w/edit?usp=sharing) https://gitlab.haskell.org/ghc/ghc/-/issues/23848 let x = case y of { p -> rhs } in ... ===> if y is marked demanded (at its binding site) case y of p -> let x = rhs in ... Do not do this in Core ... that case was discarded (if it existed) because x is demanded. but STG rewriter introduces it. To ensure SBox has an eval'd arg. Need to check that idDemandInfo is preserved by CoreTidy and CoreToSTG. In ptic CoreTidy discards a bunch of IdInfo.
     Like  Bookmark
  • https://gitlab.haskell.org/ghc/ghc/-/merge_requests/11368 Principle: after CorePrep, and in STG: a let always allocates. Core: x:: Int# = y +# 1# Prep: case y +# 1# of x -> and data ULift x :: UnliftedType = UL a a Core: x = UL p q
     Like  Bookmark
  • (note: split in separate stages and use two level lc) f :: Int -> Int f n = let g a = if even n then \x -> a*x else \y -> a+y in g 42 n + g 23 n ==>
     Like  Bookmark
  • !11034 #23813 https://gitlab.haskell.org/ghc/ghc/-/issues/23813 SG: add note to #23813 with an example of what multDmd C0N would do, and how it would differ from zapping. https://gitlab.haskell.org/ghc/ghc/-/issues/21392 Two sub-issues
     Like  Bookmark
  • GHC Threshold arity (#23113) threshold_arity (in dmdAnalRhsSig)For join points may be less than the idArity (or I suppose greater than if we for some reason the idArity is totally out bogus). For non-join points is equal to idArity (see thresholdArity). In dmdAnalRhsSig, the final_rhs_dmds will be at least as long as the threshold_arity. For join points it could be longer if let_dmd had a lot of call demands. join j x = blah in e in a context of C(C(C(Top))).
     Like  Bookmark
  • #22227 (join point loopification) Top-level loopification blocked on #22274. Idea: Do non-top-level first and unblock top-level through #22274 #22274 (Exitification in OccurAnal) https://gitlab.haskell.org/ghc/ghc/-/issues/22274 let's write here (about https://gitlab.haskell.org/ghc/ghc/-/issues/22274#note_459885) blah = ... joinrec safe xs = .... case b of
     Like  Bookmark