summaryrefslogtreecommitdiff
path: root/Compiler.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Compiler.hs')
-rw-r--r--Compiler.hs5
1 files changed, 4 insertions, 1 deletions
diff --git a/Compiler.hs b/Compiler.hs
index 2e3b80b..69b2fd8 100644
--- a/Compiler.hs
+++ b/Compiler.hs
@@ -160,7 +160,10 @@ compileProgram (Program values) = runCM $ do
switchBlock bnext
addIns (RNone, IDiscard ref)
setTerm IExit
- ([firstbb], otherbbs) <- liftM (partition ((== bstart) . bbId) . Map.elems) (gets csBlocks)
+ (bbs, otherbbs) <- liftM (partition ((== bstart) . bbId) . Map.elems) (gets csBlocks)
+ let firstbb = case bbs of
+ [bb] -> bb
+ _ -> error "Multiple bb's with the same ID!"
funcs <- gets csFunctions
datas <- gets csDatas
return (IRProgram (firstbb : otherbbs) funcs datas)