[intermediate representation] more implementation

This commit is contained in:
Philippe Tillet
2019-01-02 14:37:14 -05:00
parent 24bd2145df
commit 0378b9eb43
7 changed files with 171 additions and 29 deletions

View File

@@ -27,11 +27,11 @@ void module::set_value(const std::string& name, ir::value *value){
}
ir::phi_node* module::make_phi(ir::type *ty, unsigned num_values, ir::basic_block *block){
ir::instruction* instr = block->get_first_non_phi_or_dbg();
if(instr)
builder_.set_insert_point(instr);
basic_block::iterator insert = block->get_first_non_phi();
if(insert == block->end())
builder_.set_insert_point(insert);
ir::phi_node *res = builder_.create_phi(ty, num_values);
if(instr)
if(insert == block->end())
builder_.set_insert_point(block);
return res;
}