From 9969ad12f61848a1b8acc7822489fc47ba3c0052 Mon Sep 17 00:00:00 2001 From: Sofia Date: Thu, 9 Apr 2026 16:05:04 +0300 Subject: [PATCH] Use raw pointers for BBs --- src/codegen.cpp | 11 +++++------ src/codegen.h | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/codegen.cpp b/src/codegen.cpp index a0f2d88..a0e0bc8 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -26,7 +26,7 @@ namespace AST { if (!builder.block) return; - builder.builder->SetInsertPoint(builder.block.get()); + builder.builder->SetInsertPoint(builder.block); auto value = this->m_expr->codegen(builder, scope); builder.builder->CreateRet(value); @@ -36,7 +36,7 @@ namespace AST { if (!builder.block) return; - builder.builder->SetInsertPoint(builder.block.get()); + builder.builder->SetInsertPoint(builder.block); auto ty = this->m_type->codegen(builder, scope); auto ptr = builder.builder->CreateAlloca(ty); @@ -62,8 +62,8 @@ namespace AST { this->m_name, builder.mod.get() ); - auto BB = std::unique_ptr{ llvm::BasicBlock::Create(*builder.context, "entry", function, nullptr) }; - builder.block = std::move(BB); + auto BB = llvm::BasicBlock::Create(*builder.context, "entry", function, nullptr); + builder.block = BB; for (auto& statement : this->m_statements) { statement->codegen(builder, inner_scope); @@ -71,8 +71,7 @@ namespace AST { llvm::verifyFunction(*function); - // unique_ptr is not really supposed to free the block - builder.block.release(); + builder.block = nullptr; } llvm::Type* FundamentalType::codegen(codegen::Builder& builder, codegen::Scope& scope) { diff --git a/src/codegen.h b/src/codegen.h index 946272b..7b38782 100644 --- a/src/codegen.h +++ b/src/codegen.h @@ -11,7 +11,7 @@ namespace codegen { std::unique_ptr context; std::unique_ptr mod; std::unique_ptr> builder; - std::unique_ptr block; + llvm::BasicBlock* block; }; struct StackValue {