id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc,os,architecture,failure,difficulty,testcase,blockedby,blocking,related
4831,Too many specialisations in SpecConstr,simonpj,rl,"Ben reports that `SpecConstr` can loop:
{{{
{-# LANGUAGE PArr #-}
{-# OPTIONS -fvectorise #-}

module Loop where
import Data.Array.Parallel.Prelude
import Data.Array.Parallel.Prelude.Double
import qualified Prelude

loop :: [:Double:] -> [:Double:]
loop xs 
    | 0 == 0    = xs
    | otherwise     = ([::] !: 0) +:+ [::] +:+ ([::] !: 0)
}}}
Compile with
{{{
~/devel/ghc/ghc-head-incoming/inplace/bin/ghc-stage2 -c -Odph -fdph-seq -package dph-seq -package dph-prim-seq -c Loop.hs
}}}
(You need to build the DPH libraries first, of course.)  This causes `SpecConstr` to loop for at least 5 mins on my machine. Removing the middle `[::]` in the last line gets it though SpecConstr, but the result size is 1501143 and it then runs out of memory in the simplifier.

Building with `-dph-par` runs fine.

This is probably also why the `dph-words` benchmark in the testsuite is failing due to using too much memory during compilation.
",bug,new,low,7.6.2,Data Parallel Haskell,7.0.1,,,,Unknown/Multiple,Unknown/Multiple,None/Unknown,,,,,
