IR_FLAG_INCLUDE_DEF = 1 << 3,
IR_FLAG_ERASABLE = 1 << 4,
IR_FLAG_BLOCK_COVERAGE = 1 << 5,
-
- IR_FLAG_SPLIT_VECTOR = 1 << 6,
+ IR_FLAG_NOREF = 1 << 6,
+ IR_FLAG_SPLIT_VECTOR = 1 << 7,
IR_FLAG_LAST,
IR_FLAG_MASK_NO_OVERLAP = (IR_FLAG_HAS_ARRAYS | IR_FLAG_HAS_UNINITIALIZED),
lex_ctx_t m_context;
bool m_final = false; /* once a jump is added we're done */
- ir_instr **m_instr = nullptr;
- ir_block **m_entries = nullptr;
- ir_block **m_exits = nullptr;
+ std::vector<ir_instr *> m_instr;
+ std::vector<ir_block *> m_entries;
+ std::vector<ir_block *> m_exits;
std::vector<ir_value *> m_living;
/* For the temp-allocation */
ir_builder *m_owner;
- std::string m_name;
- qc_type m_outtype;
- int *m_params = nullptr;
- ir_flag_t m_flags = 0;
- int m_builtin = 0;
+ std::string m_name;
+ qc_type m_outtype;
+ std::vector<int> m_params;
+ ir_flag_t m_flags = 0;
+ int m_builtin = 0;
std::vector<std::unique_ptr<ir_block>> m_blocks;