[GHC] #16039: 'GHC.Magic.noinline <var>' should not float out
GHC
ghc-devs at haskell.org
Thu Dec 13 16:01:48 UTC 2018
#16039: 'GHC.Magic.noinline <var>' should not float out
-------------------------------------+-------------------------------------
Reporter: heisenbug | Owner: heisenbug
Type: bug | Status: new
Priority: normal | Milestone: 8.8.1
Component: Compiler | Version: 8.2.1
Resolution: | Keywords: FloatOut
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: #15155 | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by heisenbug):
Thanks, I did not have this `exprIsTrivial` change on my radar yet.
So far I have:
{{{#!hs
notWorthFloating e abs_vars
= go e (count isId abs_vars)
where
go (Var {}) n = n >= 0
go (Lit lit) n = ASSERT( n==0 )
litIsTrivial lit -- Note [Floating literals]
go (Tick t e) n = not (tickishIsCode t) && go e n
go (Cast e _) n = go e n
go (App e arg) n
| Type {} <- arg = go e n
| Coercion {} <- arg = go e n
| App (Var v) Type {} <- e -- added clause
, v `hasKey` noinlineIdKey
, is_triv arg = True
| n==0 = False
| is_triv arg = go e (n-1)
| otherwise = False
}}}
`interestingDict` might need a similar treatment too.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/16039#comment:4>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list