@@ -935,4 +935,14 @@ idrCall name args =
935935 , arguments = map (\x -> (x, [])) args
936936 , functionAttributes = []
937937 , metadata = []
938− }
938+ }
939+
940+assert :: Operand -> String -> Codegen ()
941+assert condition message = do
942+ passed <- getName "assertPassed"
943+ failed <- getName "assertFailed"
944+ terminate $ CondBr condition passed failed []
945+ newBlock failed
946+ cgExpr (SError message)
947+ terminate $ Unreachable []
948+ newBlock passed