Hi folks,

I was debugging a Core-to-Core transform for TEST=spec-inline
<https://github.com/ghc/ghc/blob/fe04f3783b662c52c4a0ff36b2d62a7a575998a5/testsuite/tests/simplCore/should_compile/spec-inline.hs>
and
was wondering (yet again) why GHC produces unlifted `let` bindings in Core
like it seems supposed to be doing
<https://github.com/ghc/ghc/blob/fe04f3783b662c52c4a0ff36b2d62a7a575998a5/testsuite/tests/simplCore/should_compile/spec-inline.stderr#L68-L76>
.

   - Why doesn't this use `case` instead?
   - Is there a semantic difference?
   - Can `case` be used with unlifted types?
   - And if not, why can `let`?

Unlifted `let` seems much close to `case` than to `let`. Some GHC passes
seem to agree.
<https://github.com/ghc/ghc/search?l=Haskell&q=%22strict+let%22&type=&utf8=%E2%9C%93>

Cheers,
Sebastian
_______________________________________________
ghc-devs mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to