diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2015-07-28 16:00:20 +0100 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2015-07-28 17:46:40 +0100 |
commit | a1dd7dd6ea276832aef0caaf805f0ab9f4e16262 (patch) | |
tree | a1171fd0fd4d3fdc97f023c415fdd976d44ae183 /rts/RetainerProfile.c | |
parent | e343c0a7fbaca4285a89008e5e23d35a50603763 (diff) | |
download | haskell-a1dd7dd6ea276832aef0caaf805f0ab9f4e16262.tar.gz |
Fallout from more assiduous RULE warnings
GHC now warns if rules compete, so that it's not predicatable
which will work and which will not. E.g.
{-# RULES
f (g x) = ...
g True = ...
#-}
If we had (f (g True)) it's not clear which rule would fire.
This showed up fraility in the libraries.
* Suppress warnigns in Control.Arrow, Control.Category for class
methods. At the moment we simply don't have a good way to write a
RULE with a class method in the LHS. See Trac #1595. Arrow and
Category attempt to do so; I have silenced the complaints with
-fno-warn-inline-rule-shadowing, but it's not a great solution.
* Adjust the NOINLINE pragma on 'GHC.Base.map' to account for the
map/coerce rule
* Adjust the rewrite rules in Enum, especially for the "literal 1"
case. See Note [Enum Integer rules for literal 1].
* Suppress warnings for 'bytestring' e.g.
libraries/bytestring/Data/ByteString.hs:895:1: warning:
Rule "ByteString specialise break (x==)" may never fire
because rule "Class op ==" for ‘==’ might fire first
Probable fix: add phase [n] or [~n] to the competing rule
Diffstat (limited to 'rts/RetainerProfile.c')
0 files changed, 0 insertions, 0 deletions