From 566c17a964ee573ede4ac00abeed51ca60c15c4e Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Sat, 3 Dec 2016 20:32:26 +0100 Subject: [PATCH] c++: ir_block::m_entries --- ast.cpp | 2 +- ir.cpp | 22 ++++++++++------------ ir.h | 2 +- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/ast.cpp b/ast.cpp index b507a6b..1b6d401 100644 --- a/ast.cpp +++ b/ast.cpp @@ -1582,7 +1582,7 @@ bool ast_function::generateFunction(ir_builder *ir) { return ir_block_create_return(m_curblock, m_context, nullptr); } - else if (vec_size(m_curblock->m_entries) || m_curblock == irf->m_first) + else if (m_curblock->m_entries.size() || m_curblock == irf->m_first) { if (m_return_value) { if (!m_return_value->codegen(this, false, &dummy)) diff --git a/ir.cpp b/ir.cpp index 6f06bdf..5f2ef7e 100644 --- a/ir.cpp +++ b/ir.cpp @@ -235,15 +235,14 @@ static bool GMQCC_WARN vec_ir_value_find(std::vector &vec, const ir_ return false; } -static bool GMQCC_WARN vec_ir_block_find(ir_block **vec, ir_block *what, size_t *idx) +static bool GMQCC_WARN vec_ir_block_find(std::vector &vec, ir_block *what, size_t *idx) { - size_t i; - size_t len = vec_size(vec); - for (i = 0; i < len; ++i) { - if (vec[i] == what) { - if (idx) *idx = i; - return true; - } + for (auto &it : vec) { + if (it != what) + continue; + if (idx) + *idx = &it - &vec[0]; + return true; } return false; } @@ -746,7 +745,6 @@ ir_block::~ir_block() for (size_t i = 0; i != vec_size(m_instr); ++i) delete m_instr[i]; vec_free(m_instr); - vec_free(m_entries); vec_free(m_exits); } @@ -1383,8 +1381,8 @@ bool ir_block_create_if(ir_block *self, lex_ctx_t ctx, ir_value *v, vec_push(self->m_exits, ontrue); vec_push(self->m_exits, onfalse); - vec_push(ontrue->m_entries, self); - vec_push(onfalse->m_entries, self); + ontrue->m_entries.push_back(self); + onfalse->m_entries.push_back(self); return true; } @@ -1402,7 +1400,7 @@ bool ir_block_create_jump(ir_block *self, lex_ctx_t ctx, ir_block *to) vec_push(self->m_instr, in); vec_push(self->m_exits, to); - vec_push(to->m_entries, self); + to->m_entries.push_back(self); return true; } diff --git a/ir.h b/ir.h index fe07198..3b063b6 100644 --- a/ir.h +++ b/ir.h @@ -149,7 +149,7 @@ struct ir_block { bool m_final = false; /* once a jump is added we're done */ ir_instr **m_instr = nullptr; - ir_block **m_entries = nullptr; + std::vector m_entries; ir_block **m_exits = nullptr; std::vector m_living; -- 2.39.2