| So my questions are: Am I right in assuming that CoreLint accepted programs
| should not segfault?
Yes. Modulo unsafeCoerce, and FFI calls.
| 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?
Yes; they are documented in CoreSyn, which the data type, and Lint checks them.
| 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?
Show me the code!
Instead of generating
x :: Int# = <some expression that might fail>
GHC sometimes generates
x :: Void# -> Int# = \_ - <some expression that might fail>
and then calls (x void#), to make any div-zero failures happen at the right
place.
I'm not sure if that is what you are seeing, but we can work it out when you
give more detail.
Simon
_______________________________________________
ghc-devs mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs