From 6e11c4e0962e3797a9eb8e9349d793a913e73591 Mon Sep 17 00:00:00 2001 From: isuckatcs <65320245+isuckatcs@users.noreply.github.com> Date: Sat, 6 Jul 2024 02:40:37 +0200 Subject: [PATCH] [Codegen] remove unneeded utility from codegen --- src/codegen.cpp | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/src/codegen.cpp b/src/codegen.cpp index c3c1d32..e5fcd09 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -3,21 +3,6 @@ #include #include -// FIXME: Move this to utility -namespace { -const ResolvedBinaryOperator *getAsConditionalBinop(const ResolvedExpr *expr) { - const auto *binop = dynamic_cast(expr); - if (!binop) - return nullptr; - - TokenKind op = binop->op; - if (op == TokenKind::PipePipe || op == TokenKind::AmpAmp) - return binop; - - return nullptr; -} -} // namespace - Codegen::Codegen( std::vector> resolvedSourceFile) : resolvedSourceFile(std::move(resolvedSourceFile)), builder(context), @@ -207,24 +192,24 @@ Codegen::generateUnaryOperator(const ResolvedUnaryOperator &unary) { void Codegen::generateConditionalOperator(const ResolvedExpr &op, llvm::BasicBlock *trueBlock, llvm::BasicBlock *falseBlock) { - if (const auto *condBinop = getAsConditionalBinop(&op)) { - if (condBinop->op == TokenKind::PipePipe) { + if (const auto *binop = dynamic_cast(&op)) { + if (binop->op == TokenKind::PipePipe) { llvm::BasicBlock *nextBlock = llvm::BasicBlock::Create( context, "or.lhs.false", trueBlock->getParent()); - generateConditionalOperator(*condBinop->lhs, trueBlock, nextBlock); + generateConditionalOperator(*binop->lhs, trueBlock, nextBlock); builder.SetInsertPoint(nextBlock); - generateConditionalOperator(*condBinop->rhs, trueBlock, falseBlock); + generateConditionalOperator(*binop->rhs, trueBlock, falseBlock); return; } - if (condBinop->op == TokenKind::AmpAmp) { + if (binop->op == TokenKind::AmpAmp) { llvm::BasicBlock *nextBlock = llvm::BasicBlock::Create( context, "and.lhs.true", trueBlock->getParent()); - generateConditionalOperator(*condBinop->lhs, nextBlock, falseBlock); + generateConditionalOperator(*binop->lhs, nextBlock, falseBlock); builder.SetInsertPoint(nextBlock); - generateConditionalOperator(*condBinop->rhs, trueBlock, falseBlock); + generateConditionalOperator(*binop->rhs, trueBlock, falseBlock); return; } }