[LANG] Fixed undefined behavior in replace_all_uses_with()

This commit is contained in:
Philippe Tillet
2020-05-11 12:15:56 -04:00
committed by Philippe Tillet
parent ddd89e1b22
commit 13ff6472e0
4 changed files with 22 additions and 18 deletions

View File

@@ -71,9 +71,9 @@ ir::value *module::try_remove_trivial_phis(ir::phi_node *&phi){
// unique value or self-reference
ir::value *same = *non_self_ref.begin();
assert(same != nullptr);
std::set<ir::user*> users = phi->get_users();
phi->replace_all_uses_with(same);
phi->erase_from_parent();
std::set<ir::user*> users = phi->get_users();
for(ir::user* u: users)
if(auto *uphi = dynamic_cast<ir::phi_node*>(u))
if(uphi != phi)