Skip to content

Commit

Permalink
[RELAY] Avoid unnecessarily reconstructing FunctionNode. (apache#3047)
Browse files Browse the repository at this point in the history
  • Loading branch information
lixiaoquan authored and Wei Chen committed May 13, 2019
1 parent 6b2247b commit ccd4160
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions src/relay/ir/expr_functor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -83,27 +83,27 @@ Expr ExprMutator::VisitExpr_(const TupleNode* op) {

Expr ExprMutator::VisitExpr_(const FunctionNode* op) {
tvm::Array<TypeVar> ty_params;
bool all_ty_params_changed = true;
bool all_ty_params_unchanged = true;

for (auto ty_param : op->type_params) {
TypeVar new_ty_param = Downcast<TypeVar>(VisitType(ty_param));
ty_params.push_back(new_ty_param);
all_ty_params_changed &= new_ty_param.same_as(ty_param);
all_ty_params_unchanged &= new_ty_param.same_as(ty_param);
}

tvm::Array<Var> params;
bool all_params_changed = true;
bool all_params_unchanged = true;
for (auto param : op->params) {
Var new_param = Downcast<Var>(this->Mutate(param));
params.push_back(new_param);
all_params_changed &= param.same_as(new_param);
all_params_unchanged &= param.same_as(new_param);
}

auto ret_type = this->VisitType(op->ret_type);
auto body = this->Mutate(op->body);

if (ty_params.same_as(op->type_params) &&
params.same_as(op->params) &&
if (all_ty_params_unchanged &&
all_params_unchanged &&
ret_type.same_as(op->ret_type) &&
body.same_as(op->body)) {
return GetRef<Expr>(op);
Expand Down

0 comments on commit ccd4160

Please sign in to comment.