Ticket #4831 (new bug)
Too many specialisations in SpecConstr
| Reported by: | simonpj | Owned by: | rl |
|---|---|---|---|
| Priority: | low | Milestone: | 7.6.2 |
| Component: | Data Parallel Haskell | Version: | 7.0.1 |
| Keywords: | Cc: | ||
| Operating System: | Unknown/Multiple | Architecture: | Unknown/Multiple |
| Type of failure: | None/Unknown | Difficulty: | |
| Test Case: | Blocked By: | ||
| Blocking: | Related Tickets: |
Description
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.
Change History
Note: See
TracTickets for help on using
tickets.
