Re: [GHC] #7367: Optimiser / Linker Problem on amd64

#7367: Optimiser / Linker Problem on amd64 --------------------------------------------+------------------------------ Reporter: wurmli | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.8.1 Component: Build System | Version: 7.6.1 Resolution: | Keywords: Operating System: Linux | Architecture: x86_64 Type of failure: Runtime performance bug | (amd64) Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: --------------------------------------------+------------------------------ Comment (by wurmli): May I add to your consideration the following simple example whith the same structure and behaviour: {{{ -- ghc --make -threaded -O2 -fllvm -rtsopts heapAndSpeed.hs -- ./headAndSpeed +RTS -s {-# LANGUAGE BangPatterns #-} import System.Environment import Control.Applicative import Control.Monad import Control.Monad.ST import qualified Data.STRef as VSM ------------------------------------------------------------------- -- Increment counter by 1 acc1 :: VSM.STRef s ( Int , Int ) -> ST s () acc1 !v = do{ (!k,!n) <- VSM.readSTRef v; VSM.writeSTRef v (k+1,n) } -- Increment counter until limit whileModify1 :: VSM.STRef s ( Int , Int ) -> ST s () whileModify1 !v = do !go <- do{ (k,n) <- VSM.readSTRef v; return (compare k n)} case go of LT -> do {acc1 v; whileModify1 v} EQ -> return () GT -> return () testAcc :: Int -> (Int,Int) testAcc n = runST $ do v <- VSM.newSTRef (0,n) whileModify1 v VSM.readSTRef v main = do let k = 20000000 putStrLn $ show $ testAcc k }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/7367#comment:11 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC