diff --git a/src/optimization/GVN.cpp b/src/optimization/GVN.cpp index 1accee1c77bbfb1986a1d79a6364594cc44c5a40..e97b75ba1db19637e1ea60d520dd84fddeda0f55 100644 --- a/src/optimization/GVN.cpp +++ b/src/optimization/GVN.cpp @@ -275,9 +275,15 @@ GVN::intersect(shared_ptr ci, shared_ptr cj) { c->index_ = exact_idx; c->value_expr_ = c->value_phi_ = PhiExpression::create(ci->value_expr_, cj->value_expr_); - } else if (ci->value_expr_->get_expr_type() == Expression::e_call) { + } else { + if (c->value_expr_ == nullptr) { + c->value_expr_ = + PhiExpression::create(ci->value_expr_, cj->value_expr_); + } + if (c->value_phi_ == nullptr) + c->value_phi_ = + PhiExpression::create(ci->value_expr_, cj->value_expr_); } - // ?? c->leader_ = *c->members_.begin(); }