#11728: Core lint errors -------------------------------------+------------------------------------- Reporter: Iceland_jack | Owner: Type: bug | Status: merge Priority: normal | Milestone: Component: Compiler | Version: 8.1 Resolution: | Keywords: | PatternSynonyms 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 simonpj): * status: new => merge Comment: The original report is fixed by this commit (I made a typo in the ticket number). {{{ commit 356e5e03e63558019fd0571b6c462740aceb7810 Author: Simon Peyton Jones <simonpj@microsoft.com> Date: Fri Mar 25 09:23:17 2016 +0000 Do not eta-reduce across Ticks in CorePrep The function tryEtaReducePrep was being over-ambitious. When Breakpoint ticks were involved (i.e. in GHCi), eta reduction left an out-of-scope variable in the Tick. Easily fixed. Fixes the original report in Trac #111728.
---------------------------------------------------------------
356e5e03e63558019fd0571b6c462740aceb7810 compiler/coreSyn/CorePrep.hs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/compiler/coreSyn/CorePrep.hs b/compiler/coreSyn/CorePrep.hs index 58eda2f..fb00f2b 100644 --- a/compiler/coreSyn/CorePrep.hs +++ b/compiler/coreSyn/CorePrep.hs @@ -967,8 +967,13 @@ tryEtaReducePrep bndrs (Let bind@(NonRec _ r) body) where fvs = exprFreeVars r -tryEtaReducePrep bndrs (Tick tickish e) - = fmap (mkTick tickish) $ tryEtaReducePrep bndrs e +-- NB: do not attempt to eta-reduce across ticks +-- Otherwise we risk reducing +-- \x. (Tick (Breakpoint {x}) f x) +-- ==> Tick (breakpoint {x}) f +-- which is bogus (Trac #17228) +-- tryEtaReducePrep bndrs (Tick tickish e) +-- = fmap (mkTick tickish) $ tryEtaReducePrep bndrs e tryEtaReducePrep _ _ = Nothing }}} I'll add a test. Please merge. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11728#comment:4> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler