
#9390: Inlining prevents evaluation of ignored parts of unboxed tuples -------------------------------------+------------------------------------- Reporter: snoyberg | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.8.4 Component: Compiler | Version: 7.8.3 Resolution: | Keywords: Operating System: Linux | Architecture: x86_64 (amd64) Type of failure: Incorrect | Difficulty: Unknown result at runtime | Blocked By: Test Case: | Related Tickets: Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by simonpj): My comment meant that the `x` thunk will reliably be evaluated only after performing the `write A` side effect. The question of whether it is performed before the freeze is quite a separate one. Yes it will, because the `seq` ensures that (in effect) there is a data dependency between `x` and `(V.freeze vm >>= print)`, so we can't perform the latter action until we have evaluated `x`. If instead of {{{x `seq` (V.freeze vm >> print)}}} we'd written {{{ if x>0 then V.freeze vm >> print else print "hello" }}} it would be totally clear that you couldn't do the freeze until `x` was evaluated. And `seq` behaves like that. Does that make it clearer? Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9390#comment:12 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler