Ömer Sinan Ağacan <[email protected]> writes:

> I have a very simple Core plugin that generates some functions. After my
> Core-to-Core pass is done, I'm running the linter to make sure the Core
> generated by my plugin is well-formed and well-typed. However, even though 
> lint
> checker passes, the code generated by my plugin is failing with a segfault.
>
...
>
> So my questions are: Am I right in assuming that CoreLint accepted programs
> should not segfault? What about internal invariants? Should CoreLint check for
> those? Is there any pass that checks for invariants and prints helpful 
> messages
> in case of a invariant invalidation?
>
My understanding is that CoreLint should (in principle) check all
internal invariants necessary to ensure the soundness of the Core. If a
Core program passes CoreLint it ought not to segfault. It sounds like
you found a bug in CoreLint.

> As an attempt at debugging the code generated by my plugin, I wrote the
> function that is supposed to be generated by my Core pass in Haskell and
> compiled with GHC. Generated Core is mostly the same, except at one point it
> has an extra lambda directly applied to a void#, something like ((\_ -> ...)
> void#). Where can I learn more about why GHC is doing that?
>
Hmm, interesting. I'm afraid I'm not sure what semantics void# has in
Core but it sure does sound fishy. Sadly grepping the source tree for
clues doesn't turn much up.

Simon, perhaps you could comment here?

Cheers,

- Ben

Attachment: signature.asc
Description: PGP signature

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

Reply via email to