diff options
Diffstat (limited to 'Compiler.hs')
-rw-r--r-- | Compiler.hs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/Compiler.hs b/Compiler.hs index 2e3b80b..8c32236 100644 --- a/Compiler.hs +++ b/Compiler.hs @@ -6,7 +6,6 @@ import Control.Monad.State.Strict import Data.List import qualified Data.Map.Strict as Map import qualified Data.Set as Set -import Debug.Trace import AST import Intermediate @@ -160,7 +159,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) |