
#12207: CgStaticPointers fails with -O -------------------------------------+------------------------------------- Reporter: thomie | Owner: Type: bug | Status: new Priority: high | Milestone: Component: Compiler | Version: 8.1 (CodeGen) | Keywords: Resolution: | StaticPointers Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: | codeGen/should_run/CgStaticPointers Blocked By: | Blocking: Related Tickets: #11656 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by facundo.dominguez): * cc: simonpj (added) Comment: With `-O` the `FloatOut` pass places the `StaticPtr` applications at the top level as expected: {{{ lvl_s4Ke lvl_s4Ke = StaticPtr 4472709404834582951## 17755048586376966233## lvl_s4Kc lvl_s4Kd ... staticKey lvl_s4Ke ... }}} However some other core-to-core pass is simplifying `staticKey lvl_s4Ke` and replacing it with `Fingerprint 4472709404834582951## 17755048586376966233##`. This is alright but it also removes the `lvl_s4Ke` binding! Which then cannot be added to the SPT. Any pointers to the code which removes the binding? My first attempt would be to make a special case for bindings to `StaticPtr` applications so they are not removed. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12207#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler