rule not firing
In the code below, the rule appears not to fire.
Based on the bytestring rules, reported as broken here: http://www.haskell.org/pipermail/glasgow-haskell-users/2012-August/022775.html
ghc -O --make h.hs -ddump-simpl -fforce-recomp -Wall
module Q (f) where
{-# NOINLINE f #-}
f :: Bool -> String
f c = g ((==) c)
{-# NOINLINE g #-}
g :: (Bool -> Bool) -> String
g _ = "g"
h :: Bool -> String
h _ = "h"
{-# RULES "MyRule" forall x . g ((==) x) = h x #-}
==================== Tidy Core ====================
Result size of Tidy Core = {terms: 25, types: 21, coercions: 0}
lvl_rkK :: GHC.Types.Char
[GblId, Caf=NoCafRefs, Str=DmdType m]
lvl_rkK = GHC.Types.C# 'h'
lvl1_rkL :: [GHC.Types.Char]
[GblId, Caf=NoCafRefs, Str=DmdType]
lvl1_rkL =
GHC.Types.:
@ GHC.Types.Char lvl_rkK (GHC.Types.[] @ GHC.Types.Char)
h_reA :: GHC.Types.Bool -> GHC.Base.String
[GblId, Arity=1, Caf=NoCafRefs, Str=DmdType A]
h_reA = \ _ -> lvl1_rkL
lvl2_rkM :: GHC.Types.Char
[GblId, Caf=NoCafRefs, Str=DmdType m]
lvl2_rkM = GHC.Types.C# 'g'
lvl3_rkN :: [GHC.Types.Char]
[GblId, Caf=NoCafRefs, Str=DmdType]
lvl3_rkN =
GHC.Types.:
@ GHC.Types.Char lvl2_rkM (GHC.Types.[] @ GHC.Types.Char)
g_rez :: (GHC.Types.Bool -> GHC.Types.Bool) -> GHC.Base.String
[GblId, Arity=1, Caf=NoCafRefs, Str=DmdType A]
g_rez = \ _ -> lvl3_rkN
Q.f [InlPrag=NOINLINE] :: GHC.Types.Bool -> GHC.Base.String
[GblId, Arity=1, Caf=NoCafRefs, Str=DmdType A]
Q.f =
\ (c_aeC :: GHC.Types.Bool) ->
g_rez (GHC.Classes.$fEqBool_$c== c_aeC)
Trac metadata
Trac field | Value |
---|---|
Version | 7.6.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |