[GHC] #14677: Code generator does not correctly tag a pointer
GHC
ghc-devs at haskell.org
Mon Jan 7 09:47:12 UTC 2019
#14677: Code generator does not correctly tag a pointer
-------------------------------------+-------------------------------------
Reporter: simonpj | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.2.2
Resolution: | Keywords: CodeGen
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: 15155 | Blocking: 14626
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by simonpj):
If you didn't have that `{-# NOINLINE a #-}`, then the `IND_STATIC` would
point directly to `a1_closure`, and would be correctly tagged. And in
general, absent `{-# NOINLINE #-}` directives, I believe that all that
cases your patch optimises would be optimised by the simplifier to get the
code you want.
So that seems to narrow the scope of the optimisation considerably:
* You save code-size on many (or perhaps all?) `IND_STATIC` closures.
* You save entering any such `IND_STATIC`s that are marked `NOINLINE`.
So yes, it's an improvement, but I wonder whether it's worth the extra
code and maintenance burden? I'm thinking of someone looking at this code
in 5 yrs time.
Do you think it is?
Thanks for doing this -- I'm not criticising, just trying to understand
with precision what is and is not happening. Clarity is good!
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14677#comment:33>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list