
#13338: New versions of time and Cabal are causing a Core Lint error on Windows -------------------------------------+------------------------------------- Reporter: rwbarton | Owner: (none) Type: bug | Status: new Priority: highest | Milestone: 8.2.1 Component: Compiler | Version: 8.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by rwbarton): * owner: rwbarton => (none) * cc: simonpj (added) Comment: Here is a self-contained reproducer with today's HEAD: {{{#!hs {-# LANGUAGE MagicHash #-} module Fl2 where import GHC.Exts magic# :: Int# -> Bool magic# x# = True {-# NOINLINE magic# #-} f :: Int# -> Int -> Int f x# n = length [ i | i@(I# i#) <- [0..n], magic# (remInt# x# 100000# -# i#) ] }}} When the expression `remInt# x# 100000#` gets floated out of the loop and replaced by {{{ case lvl_s2Tb of v_B1 { I# v_B2 -> v_B2 } }}} the surrounding application {{{ -# (case lvl_s2Tb of v_B1 { I# v_B2 -> v_B2 }) i#_a1ok }}} does not satisfy the let/app invariant. Interestingly my build of the "Join points" commit (Feb 1) does not float out the expression `remInt# x# 100000#`. That's a bit curious since it already contains the commit "Float unboxed expressions by boxing". So my guess is that one of "Another improvement to SetLevels" and "Fix SetLevels for join points" is responsible. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13338#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler