X-Git-Url: https://git.lukelau.me/?p=kaleidoscope-hs-old.git;a=blobdiff_plain;f=Main.hs;h=328aaf3c72c56d9b1d13f4f1de4376cf07b5681d;hp=89fd91a39cf663048b77497b879e9d01903e5751;hb=f250f7c0e621f1f94b6d2377f6a634314f306ace;hpb=93653d435fe06ccc03a4b63bff1c86afba6e1ca0;ds=inline diff --git a/Main.hs b/Main.hs index 89fd91a..328aaf3 100644 --- a/Main.hs +++ b/Main.hs @@ -23,6 +23,7 @@ import LLVM.AST.Float import LLVM.AST.FloatingPointPredicate hiding (False, True) import LLVM.AST.Operand import LLVM.AST.Type as Type +import LLVM.AST.Typed import LLVM.Pretty import Debug.Trace @@ -90,7 +91,9 @@ buildExpr binds (AST.BinOp op a b) = do buildExpr binds (AST.If cond thenE elseE) = mdo _ifB <- block `named` "if" + condV <- buildExpr binds cond + when (typeOf condV /= i1) $ lift $ lift $ Left "Not a boolean" condBr condV thenB elseB thenB <- block `named` "then"