[GHC] #13338: New versions of time and Cabal are causing a Core Lint error on Windows
GHC
ghc-devs at haskell.org
Sat Feb 25 18:34:33 UTC 2017
#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
More information about the ghc-tickets
mailing list