[GHC] #8871: No-op assignment I64[BaseReg + 784] = I64[BaseReg + 784]; is generated into optimized Cmm

GHC ghc-devs at haskell.org
Mon Mar 10 09:47:28 UTC 2014


#8871: No-op assignment I64[BaseReg + 784] = I64[BaseReg + 784]; is generated into
optimized Cmm
------------------------------------+-------------------------------------
       Reporter:  kgardas           |             Owner:
           Type:  bug               |            Status:  new
       Priority:  normal            |         Milestone:
      Component:  Compiler          |           Version:  7.9
       Keywords:                    |  Operating System:  Unknown/Multiple
   Architecture:  Unknown/Multiple  |   Type of failure:  Other
     Difficulty:  Unknown           |         Test Case:
     Blocked By:                    |          Blocking:
Related Tickets:                    |
------------------------------------+-------------------------------------
 Hello,
 on SPARC and I also guess on PPC it's possible to get following line in
 optimized Cmm code:
 {{{
 I64[BaseReg + 784] = I64[BaseReg + 784];
 }}}
 this line is then translated by NCG wasting 5 isns on SPARC at least.
 Don't know PPC. I'm not sure if this is possible to duplicate this on i386
 due to fewer regs. Generally speaking you need to have 32bit target with
 more regs available. Interesting fact is that such line is not presented
 in non-optimized Cmm, but is presented in optimized one. Both optimized
 and non-optimized Cmms attached. Both get from compiling T7507 testcase by
 stage1 compiler on SPARC:
 {{{
 /home/karel/vcs/ghc-src/ghc-sparc-reg_ncg/inplace/bin/ghc-stage1 -fforce-
 recomp -dcore-lint -dcmm-lint -dno-debug-output -no-user-package-db
 -rtsopts -fno-ghci-history -c T7507.hs  -O -ddump-opt-cmm > T7507.opt-cmm-
 sparc-reg-ncg
 }}}
 Of course non-opt Cmm is got by -ddump-cmm instead of -ddump-opt-cmm.
 If you need more simplified testcase, then following code is usable too:
 {{{
 module Main where

 import Data.Int

 main = print ( ( 2 ^ 6 ) :: Int64 )
 }}}

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


More information about the ghc-tickets mailing list