Disappearing case alternative?
Conal Elliott
conal at conal.net
Sun Mar 13 03:55:53 UTC 2016
I think you put your finger on the problem here. That `evalP` is a
placeholder to get transformed away later. I thought that my `NOINLINE`
annotation would prevent GHC from noticing that `evalP` evaluates to
bottom. I'll do a better job.
Thank you!
-- Conal
On Fri, Mar 11, 2016 at 4:06 PM, Ömer Sinan Ağacan <omeragacan at gmail.com>
wrote:
> Empty case expressions like `case evalP @ (Pair Int) ds of wild { }` are
> only
> valid if the scrutinee is bottom, see CoreLint.hs for how exprIsBottom is
> used
> and CoreUtils.hs for how it's defined. So it seems like the simplifier
> somehow
> figured that `evalP @ (Pair Int) ds` is bottom, and generated an empty
> case.
>
> Is the linter complaining about this case expression? (you can try it using
> CoreLint.lintExpr)
>
> 2016-03-11 16:49 GMT-05:00 Conal Elliott <conal at conal.net>:
> >
> > I'm working on a GHC plugin, mainly in the form of a "builtin" rewrite
> rule,
> > and I'm seeing a strange disappearance of a case alternative. With
> > -ddump-rule-rewrites, I can see before & after the disappearance: Here's
> one
> > rule firing with the alternative present:
> >
> > Rule fired
> > Rule: reify
> > Before: reifyP
> > TyArg Pair Int -> Int
> > ValArg \ (ds :: Pair Int) ->
> > case ds of _ { :# a b -> $fNumInt_$c+ a b }
> > After: lamP
> > @ (Pair Int)
> > @ Int
> > "ds"#
> > (\ (ds :: EP (Pair Int)) ->
> > reifyP
> > @ Int
> > (case evalP @ (Pair Int) ds of _ { :# a b ->
> > $fNumInt_$c+ a b }))
> > Cont: StrictArg toE
> > Stop[BoringCtxt] E Prim (Pair Int -> Int)
> >
> > The next thing I see is the rule firing again on the residual reifyP
> > application, but with the case alternative gone:
> >
> > Rule fired
> > Rule: reify
> > Before: reifyP
> > TyArg Int ValArg case evalP @ (Pair Int) ds of wild { }
> > After: ...
> >
> > Any ideas what's causing the disappearance?
> >
> > Thanks. - Conal
> >
> >
> > _______________________________________________
> > ghc-devs mailing list
> > ghc-devs at haskell.org
> > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20160312/8c53e3b4/attachment.html>
More information about the ghc-devs
mailing list