From 8fe3e4e85ba910aa086f74f0ec285c28453b597c Mon Sep 17 00:00:00 2001 From: Javier R Date: Wed, 25 Dec 2024 11:54:24 +0100 Subject: [PATCH] fix: use more `general` approach --- lib/Codegen/Codegen.hs | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/lib/Codegen/Codegen.hs b/lib/Codegen/Codegen.hs index ed6fe9c..1569536 100644 --- a/lib/Codegen/Codegen.hs +++ b/lib/Codegen/Codegen.hs @@ -405,23 +405,21 @@ generateCast expr = -- | Generate LLVM code for for loops. generateForLoop :: (MonadCodegen m) => AT.Expr -> m AST.Operand -generateForLoop (AT.For _ forInit forCond forStep forBody) = mdo - _ <- generateExpr forInit +generateForLoop (AT.For _ init' cond step body) = mdo + _ <- generateExpr init' I.br condBlock condBlock <- IRM.block `IRM.named` U.stringToByteString "for.cond" - condResult <- generateExpr forCond + condResult <- generateExpr cond I.condBr condResult bodyBlock exitBlock bodyBlock <- IRM.block `IRM.named` U.stringToByteString "for.body" - case forBody of - AT.Block exprs -> mapM_ generateExpr exprs - expr -> CM.void $ generateExpr expr + CM.void $ generateExpr body I.br stepBlock stepBlock <- IRM.block `IRM.named` U.stringToByteString "for.step" - _ <- generateExpr forStep + _ <- generateExpr step I.br condBlock exitBlock <- IRM.block `IRM.named` U.stringToByteString "for.exit" @@ -439,9 +437,7 @@ generateWhileLoop (AT.While _ cond body) = mdo I.condBr condOperand bodyBlock exitBlock bodyBlock <- IRM.block `IRM.named` U.stringToByteString "while.body" - case body of - AT.Block stmts -> mapM_ generateExpr stmts - _ -> CM.void $ generateExpr body + CM.void $ generateExpr body I.br condBlock exitBlock <- IRM.block `IRM.named` U.stringToByteString "while.exit"