upstream (#6436)
author雾雨魔理沙 <lolisa@marisa.moe>
Sat, 12 Sep 2020 00:00:50 +0000 (17:00 -0700)
committerGitHub <noreply@github.com>
Sat, 12 Sep 2020 00:00:50 +0000 (17:00 -0700)
src/relay/transforms/fold_constant.cc

index 0a1f173..a3f2f69 100644 (file)
@@ -105,7 +105,23 @@ class ConstantFolder : public ExprMutator {
     }
   }
 
+  bool inside_primitive = false;
+  Expr VisitExpr_(const FunctionNode* op) final {
+    if (op->HasNonzeroAttr(attr::kPrimitive)) {
+      CHECK_EQ(inside_primitive, false);
+      inside_primitive = true;
+      auto ret = ExprMutator::VisitExpr_(op);
+      inside_primitive = false;
+      return ret;
+    } else {
+      return ExprMutator::VisitExpr_(op);
+    }
+  }
+
   Expr VisitExpr_(const CallNode* call) final {
+    if (inside_primitive) {
+      return GetRef<Expr>(call);
+    }
     static auto op_stateful = Op::GetAttrMap<TOpIsStateful>("TOpIsStateful");
 
     std::unordered_set<std::string> skip_list{"zeros_like", "ones_like", "full_like", "full"};