[GHC] #8903: Add dead store elimination

GHC ghc-devs at haskell.org
Sun Mar 16 17:22:44 UTC 2014


#8903: Add dead store elimination
------------------------------------+-------------------------------------
       Reporter:  tibbe             |             Owner:
           Type:  feature request   |            Status:  new
       Priority:  normal            |         Milestone:
      Component:  Compiler          |           Version:  7.9
       Keywords:                    |  Operating System:  Unknown/Multiple
   Architecture:  Unknown/Multiple  |   Type of failure:  None/Unknown
     Difficulty:  Unknown           |         Test Case:
     Blocked By:                    |          Blocking:
Related Tickets:                    |
------------------------------------+-------------------------------------
 We could use some dead store elimination in the code generator. Here's
 some Cmm that has redundant stores to the same locations:

 {{{
 // thawArray#:
 I64[Hp - 168] = I64[PicBaseReg + stg_MUT_ARR_PTRS_DIRTY_info at GOTPCREL];
 I64[Hp - 160] = 16;
 I64[Hp - 152] = 17;
 _c2nT::I64 = Hp - 168;
 call MO_Memcpy(_c2nT::I64 + 24, _s2cx::P64 + 24, 128, 8);
 // writeArray#:
 P64[(_c2nT::I64 + 24) + (_s2cy::I64 << 3)] = _s2cE::P64;
 I64[_c2nT::I64] = I64[PicBaseReg + stg_MUT_ARR_PTRS_DIRTY_info at GOTPCREL];
 I8[(_c2nT::I64 + 24) + ((I64[_c2nT::I64 + 8] << 3) + (_s2cy::I64 >> 7))] =
 1 :: W8;
 // unsafeFreeze#
 I64[_c2nT::I64] = I64[PicBaseReg +
 stg_MUT_ARR_PTRS_FROZEN0_info at GOTPCREL];
 }}}

 There are three stores to the same location (`I64[_c2nT::I64]`).

 (There's also one much less obvious double store to another location,
 which will probably be much harder to address: the store to
 `P64[(_c2nT::I64 + 24) + (_s2cy::I64 << 3)]` overwrites a word previous
 written by the `MO_Memcpy`. Getting to that one will be hard as the memcoy
 callish !MachOp only gets expanded in the backend.)

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8903>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list