// IR Function: // - 保存参数列表、基本块列表 // - 记录函数属性/元信息(按需要扩展) #include "ir/IR.h" namespace ir { Function::Function(std::string name, std::shared_ptr ret_type, std::vector> param_types) : Value(std::move(ret_type), std::move(name)) { for (size_t i = 0; i < param_types.size(); ++i) { arguments_.push_back(std::make_unique( param_types[i], "a" + std::to_string(i), this, static_cast(i))); } } BasicBlock* Function::CreateBlock(const std::string& name) { auto block = std::make_unique(name); auto* ptr = block.get(); ptr->SetParent(this); blocks_.push_back(std::move(block)); if (!entry_) { entry_ = ptr; } return ptr; } BasicBlock* Function::GetEntry() { return entry_; } const BasicBlock* Function::GetEntry() const { return entry_; } const std::vector>& Function::GetBlocks() const { return blocks_; } const std::vector>& Function::GetArguments() const { return arguments_; } } // namespace ir