Resolving dependencies... Configuring base-orphans-0.5.4... Configuring mtl-2.2.1... Building base-orphans-0.5.4... Building mtl-2.2.1... Installed base-orphans-0.5.4 Configuring prelude-extras-0.4.0.3... Building prelude-extras-0.4.0.3... Configuring primitive-0.6.2.0... Installed mtl-2.2.1 Building primitive-0.6.2.0... Configuring semigroups-0.18.2... Installed prelude-extras-0.4.0.3 Building semigroups-0.18.2... Configuring random-1.1... Installed semigroups-0.18.2 Building random-1.1... Configuring stm-2.4.4.1... Installed random-1.1 Configuring transformers-compat-0.5.1.4... Installed primitive-0.6.2.0 Building stm-2.4.4.1... Building transformers-compat-0.5.1.4... Configuring text-1.2.2.1... Installed transformers-compat-0.5.1.4 Building text-1.2.2.1... Installed stm-2.4.4.1 Configuring linearscan-1.0.0... Building linearscan-1.0.0... Configuring tf-random-0.5... Installed linearscan-1.0.0 Building tf-random-0.5... Configuring tagged-0.8.5... Installed text-1.2.2.1 Building tagged-0.8.5... Configuring exceptions-0.8.3... Installed tf-random-0.5 Building exceptions-0.8.3... Configuring StateVar-1.1.0.4... Installed tagged-0.8.5 Building StateVar-1.1.0.4... Installed StateVar-1.1.0.4 Configuring hashable-1.2.4.0... Configuring distributive-0.5.0.2... Installed exceptions-0.8.3 Building hashable-1.2.4.0... Configuring QuickCheck-2.9.2... Installed hashable-1.2.4.0 Building distributive-0.5.0.2... Building QuickCheck-2.9.2... Configuring void-0.7.1... Installed distributive-0.5.0.2 Building void-0.7.1... Installed void-0.7.1 Configuring contravariant-1.4... Building contravariant-1.4... Installed contravariant-1.4 Configuring comonad-5... Building comonad-5... Installed comonad-5 Configuring bifunctors-5.4.1... Building bifunctors-5.4.1... Installed QuickCheck-2.9.2 Installed bifunctors-5.4.1 Configuring semigroupoids-5.1... Configuring profunctors-5.2... Building profunctors-5.2... Building semigroupoids-5.1... Installed profunctors-5.2 Installed semigroupoids-5.1 Configuring free-4.12.4... Building free-4.12.4... Installed free-4.12.4 Configuring linearscan-hoopl-0.8.0... Building linearscan-hoopl-0.8.0... Failed to install linearscan-hoopl-0.8.0 Build log ( /home/builder/.cabal/logs/linearscan-hoopl-0.8.0.log ): cabal: Entering directory '/tmp/cabal-tmp-25386/linearscan-hoopl-0.8.0' Configuring linearscan-hoopl-0.8.0... Building linearscan-hoopl-0.8.0... Preprocessing library linearscan-hoopl-0.8.0... [1 of 2] Compiling LinearScan.Hoopl.DSL ( LinearScan/Hoopl/DSL.hs, dist/build/LinearScan/Hoopl/DSL.o ) [2 of 2] Compiling LinearScan.Hoopl ( LinearScan/Hoopl.hs, dist/build/LinearScan/Hoopl.o ) LinearScan/Hoopl.hs:52:17: error: • Couldn't match type ‘StateT ([Int], SpillStack) Identity Int’ with ‘Int’ Expected type: Block nv C C -> Int Actual type: Block nv C C -> Env Int • In the ‘blockId’ field of a record In the expression: BlockInfo {blockId = getBlockId . entryLabel, blockSuccessors = mapM getBlockId . successors, splitCriticalEdge = \ (BlockCC b m e) (BlockCC next _ _) -> do { let ...; .... }, blockOps = \ (BlockCC a b z) -> ([NodeCO a], map NodeOO (blockToList b), [NodeOC z]), setBlockOps = \ _ [a] b [z] -> BlockCC (getNodeCO a) (blockFromList (map getNodeOO b)) (getNodeOC z)} In an equation for ‘blockInfo’: blockInfo getBlockId = BlockInfo {blockId = getBlockId . entryLabel, blockSuccessors = mapM getBlockId . successors, splitCriticalEdge = \ (BlockCC b m e) (BlockCC next _ _) -> do { ... }, blockOps = \ (BlockCC a b z) -> ([...], map NodeOO (blockToList b), [...]), setBlockOps = \ _ [a] b [z] -> BlockCC (getNodeCO a) (blockFromList (map getNodeOO b)) (getNodeOC z)} LinearScan/Hoopl.hs:54:25: error: • Couldn't match type ‘StateT ([Int], SpillStack) Identity [Int]’ with ‘[Int]’ Expected type: Block nv C C -> [Int] Actual type: Block nv C C -> StateT ([Int], SpillStack) Identity [Int] • In the ‘blockSuccessors’ field of a record In the expression: BlockInfo {blockId = getBlockId . entryLabel, blockSuccessors = mapM getBlockId . successors, splitCriticalEdge = \ (BlockCC b m e) (BlockCC next _ _) -> do { let ...; .... }, blockOps = \ (BlockCC a b z) -> ([NodeCO a], map NodeOO (blockToList b), [NodeOC z]), setBlockOps = \ _ [a] b [z] -> BlockCC (getNodeCO a) (blockFromList (map getNodeOO b)) (getNodeOC z)} In an equation for ‘blockInfo’: blockInfo getBlockId = BlockInfo {blockId = getBlockId . entryLabel, blockSuccessors = mapM getBlockId . successors, splitCriticalEdge = \ (BlockCC b m e) (BlockCC next _ _) -> do { ... }, blockOps = \ (BlockCC a b z) -> ([...], map NodeOO (blockToList b), [...]), setBlockOps = \ _ [a] b [z] -> BlockCC (getNodeCO a) (blockFromList (map getNodeOO b)) (getNodeOC z)} LinearScan/Hoopl.hs:95:37: error: • Couldn't match type ‘(VarId, VarKind)’ with ‘Int’ Expected type: [(Int, PhysReg)] Actual type: [((VarId, VarKind), PhysReg)] • In the first argument of ‘setRegisters’, namely ‘m’ In the first argument of ‘(>>=)’, namely ‘setRegisters m n’ In the expression: setRegisters m n >>= \ alloc -> return [NodeCO alloc] LinearScan/Hoopl.hs:96:37: error: • Couldn't match type ‘(VarId, VarKind)’ with ‘Int’ Expected type: [(Int, PhysReg)] Actual type: [((VarId, VarKind), PhysReg)] • In the first argument of ‘setRegisters’, namely ‘m’ In the first argument of ‘(>>=)’, namely ‘setRegisters m n’ In the expression: setRegisters m n >>= \ alloc -> return [NodeOO alloc] LinearScan/Hoopl.hs:97:37: error: • Couldn't match type ‘(VarId, VarKind)’ with ‘Int’ Expected type: [(Int, PhysReg)] Actual type: [((VarId, VarKind), PhysReg)] • In the first argument of ‘setRegisters’, namely ‘m’ In the first argument of ‘(>>=)’, namely ‘setRegisters m n’ In the expression: setRegisters m n >>= \ alloc -> return [NodeOC alloc] LinearScan/Hoopl.hs:114:5: error: • Couldn't match type ‘(,) String’ with ‘Either (String, [String])’ Expected type: Either (String, [String]) (Graph nr C C) Actual type: (String, Graph' Block nr C C) • In the expression: newGraph <$> runIdentity (go (1 + IM.size (unsafeCoerce body))) In an equation for ‘allocateHoopl’: allocateHoopl regs offset slotSize useVerifier entry graph = newGraph <$> runIdentity (go (1 + IM.size (unsafeCoerce body))) where newGraph xs = GMany NothingO (newBody xs) NothingO where newBody = foldl' (flip addBlock) emptyBody blocks = postorder_dfs_from body entry GMany NothingO body NothingO = graph go n = evalStateT alloc ([n .. ], newSpillStack offset slotSize) where alloc = allocate regs (blockInfo getBlockId) opInfo useVerifier blocks where ... LinearScan/Hoopl.hs:114:18: error: • Couldn't match type ‘[]’ with ‘Block nr C’ Expected type: (String, Either [String] (Block nr C C)) Actual type: (String, Either [String] [Block nr C C]) • In the second argument of ‘(<$>)’, namely ‘runIdentity (go (1 + IM.size (unsafeCoerce body)))’ In the expression: newGraph <$> runIdentity (go (1 + IM.size (unsafeCoerce body))) In an equation for ‘allocateHoopl’: allocateHoopl regs offset slotSize useVerifier entry graph = newGraph <$> runIdentity (go (1 + IM.size (unsafeCoerce body))) where newGraph xs = GMany NothingO (newBody xs) NothingO where newBody = foldl' (flip addBlock) emptyBody blocks = postorder_dfs_from body entry GMany NothingO body NothingO = graph go n = evalStateT alloc ([n .. ], newSpillStack offset slotSize) where alloc = allocate regs (blockInfo getBlockId) opInfo useVerifier blocks where ... • Relevant bindings include go :: Int -> Identity (String, Either [String] [Block nr C C]) (bound at LinearScan/Hoopl.hs:123:5) allocateHoopl :: Int -> Int -> Int -> UseVerifier -> Label -> Graph nv C C -> Either (String, [String]) (Graph nr C C) (bound at LinearScan/Hoopl.hs:113:1) cabal: Leaving directory '/tmp/cabal-tmp-25386/linearscan-hoopl-0.8.0' cabal: Error: some packages failed to install: linearscan-hoopl-0.8.0 failed during the building phase. The exception was: ExitFailure 1