Optimized Cmm containing useless blocks

Simon Peyton Jones simonpj at microsoft.com
Mon Mar 10 08:30:43 UTC 2014


That doesn't look right.  Are you using -O?

If so, perhaps open a ticket explaining how to reproduce, and including the results of -ddump-cmm.

(Don't use module Main, because it's irrelevant to this question, and generate a certain amount of auxiliary goop.)

Thanks

SImon

| -----Original Message-----
| From: ghc-devs [mailto:ghc-devs-bounces at haskell.org] On Behalf Of Karel
| Gardas
| Sent: 09 March 2014 21:40
| To: Johan Tibell
| Cc: ghc-devs at haskell.org
| Subject: Re: Optimized Cmm containing useless blocks
| 
| 
| If I may add to this, then I'm curious why there is something like:
| 
|   I64[BaseReg + 784] = I64[BaseReg + 784];
| 
| presented in Cmm optimized code. Since I don't know Cmm enough I've
| verified if the semantics is really C like by looking into generated asm
| and indeed it looks so. This costs 5 isns of sparc asm btw.
| 
| If someone is interested to duplicate this, then use sparc or ppc 32 bit
| registerised target and Haskell code:
| 
| module Main where
| 
| import Data.Int
| 
| main = print ( ( 2 ^ 6 ) :: Int64 )
| 
| Karel
| 
| On 03/ 8/14 09:21 AM, Johan Tibell wrote:
| > While looking at some generated Cmm I saw things like this
| >
| > c1Cm:
| >      goto c1Cq;
| > c1Cq:
| >
| > i.e. useless basic blocks that haven't been optimized away. Is this to
| > be expected?
| >
| > -- Johan
| >
| >
| >
| > _______________________________________________
| > ghc-devs mailing list
| > ghc-devs at haskell.org
| > http://www.haskell.org/mailman/listinfo/ghc-devs
| 
| _______________________________________________
| ghc-devs mailing list
| ghc-devs at haskell.org
| http://www.haskell.org/mailman/listinfo/ghc-devs


More information about the ghc-devs mailing list