From 011e0e8bad275cfa0e26aa4dd8677f82116d5dc2 Mon Sep 17 00:00:00 2001 From: CHatingPython Date: Mon, 1 Jun 2026 17:47:40 +0200 Subject: [PATCH] refactor(furc): introduce `ir_register` type --- furc/include/furc/front/ir_generator.hpp | 4 +++- furc/src/front/ir_generator.cpp | 12 ++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/furc/include/furc/front/ir_generator.hpp b/furc/include/furc/front/ir_generator.hpp index 589621e..feb728e 100644 --- a/furc/include/furc/front/ir_generator.hpp +++ b/furc/include/furc/front/ir_generator.hpp @@ -8,6 +8,8 @@ namespace furc { namespace front { +using ir_register = std::uint32_t; + class ir_generator final : public ast::visitor { public: ir_generator() = default; @@ -36,7 +38,7 @@ private: furlang::ir::module m_module; std::unique_ptr m_currentFunction; std::shared_ptr m_currentBlock; - std::uint32_t m_registerCounter = 0; + ir_register m_registerCounter = 0; }; } // namespace front diff --git a/furc/src/front/ir_generator.cpp b/furc/src/front/ir_generator.cpp index 3f3fde6..91e4d6a 100644 --- a/furc/src/front/ir_generator.cpp +++ b/furc/src/front/ir_generator.cpp @@ -43,7 +43,7 @@ void ir_generator::visit(const ast::return_statement_node& returnStmt) { void ir_generator::visit(const ast::if_statement_node& node) { node.cond()->accept(*this); - std::uint32_t cond = m_registerCounter - 1; + ir_register cond = m_registerCounter - 1; m_currentBlock->emplace(ir::operand::new_reg(cond), m_currentFunction->blocks().size(), m_currentFunction->blocks().size() + 1); @@ -105,10 +105,10 @@ static inline furlang::ir::binary_op_instruction_t binary_op_instruction_t(ast:: void ir_generator::visit(const ast::binop_expression_node& node) { node.lhs()->accept(*this); - std::uint32_t lhs = m_registerCounter - 1; + ir_register lhs = m_registerCounter - 1; node.rhs()->accept(*this); - std::uint32_t rhs = m_registerCounter - 1; - std::uint32_t dst = m_registerCounter++; + ir_register rhs = m_registerCounter - 1; + ir_register dst = m_registerCounter++; m_currentBlock->emplace(binary_op_instruction_t(node.type()), ir::operand::new_reg(lhs), ir::operand::new_reg(rhs), @@ -117,11 +117,11 @@ void ir_generator::visit(const ast::binop_expression_node& node) { void ir_generator::visit(const ast::var_assign_expression_node& node) { node.rhs()->accept(*this); - std::uint32_t rhs = m_registerCounter - 1; + ir_register rhs = m_registerCounter - 1; assert(node.lhs()->expression_type() == ast::expression_node_t::VarRead); ast::var_read_expression_node_h lhs = node.lhs(); - std::uint32_t reg = m_registerCounter++; + ir_register reg = m_registerCounter++; auto compound = node.compound(); if (compound != ast::binop_expression_node_t::None) {