1/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19#include <tvm/ir/module.h>
20#include <tvm/runtime/registry.h>
21#include <tvm/script/ir_builder/ir/frame.h>
22
23namespace tvm {
24namespace script {
25namespace ir_builder {
26namespace ir {
27
28void IRModuleFrameNode::ExitWithScope() {
29 ICHECK_EQ(functions.size(), global_vars.size());
30 int n = functions.size();
31 Map<GlobalVar, BaseFunc> func_map;
32 for (int i = 0; i < n; ++i) {
33 func_map.Set(global_vars[i], functions[i]);
34 }
35 IRBuilder builder = IRBuilder::Current();
36 ICHECK(!builder->result.defined()) << "ValueError: Builder.result has already been set";
37 builder->result = tvm::IRModule(func_map);
38}
39
40TVM_REGISTER_NODE_TYPE(IRModuleFrameNode);
41
42} // namespace ir
43} // namespace ir_builder
44} // namespace script
45} // namespace tvm
46