This is an automated email from the ASF dual-hosted git repository.

ruihangl pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tvm.git


The following commit(s) were added to refs/heads/main by this push:
     new eb4eb3e88d [FFI] bump to latest version (#18654)
eb4eb3e88d is described below

commit eb4eb3e88df4a43aa66bb500c61445fc98f5789a
Author: Tianqi Chen <[email protected]>
AuthorDate: Wed Jan 14 09:38:15 2026 -0500

    [FFI] bump to latest version (#18654)
    
    This PR bumps tvm-ffi to latest version
---
 3rdparty/tvm-ffi                                   | 2 +-
 apps/hexagon_api/CMakeLists.txt                    | 6 ++++++
 apps/hexagon_launcher/cmake/android/CMakeLists.txt | 2 ++
 apps/hexagon_launcher/cmake/hexagon/CMakeLists.txt | 2 ++
 include/tvm/ir/expr.h                              | 3 +--
 include/tvm/ir/module.h                            | 4 ++--
 include/tvm/relax/expr.h                           | 8 +++-----
 src/ir/module.cc                                   | 9 +++++----
 src/relax/ir/expr.cc                               | 6 +++---
 tests/python/ir/test_ir_container.py               | 1 -
 10 files changed, 25 insertions(+), 18 deletions(-)

diff --git a/3rdparty/tvm-ffi b/3rdparty/tvm-ffi
index ae346ec92a..c78e8b4eef 160000
--- a/3rdparty/tvm-ffi
+++ b/3rdparty/tvm-ffi
@@ -1 +1 @@
-Subproject commit ae346ec92a3c386f1376064ae086aae72947c329
+Subproject commit c78e8b4eefa076c457af97bd3930dd664aec71c3
diff --git a/apps/hexagon_api/CMakeLists.txt b/apps/hexagon_api/CMakeLists.txt
index 4dfba8669b..b310227baf 100644
--- a/apps/hexagon_api/CMakeLists.txt
+++ b/apps/hexagon_api/CMakeLists.txt
@@ -47,6 +47,8 @@ ExternalProject_Add(x86_tvm_runtime_rpc
     "-DUSE_HEXAGON_TOOLCHAIN=${USE_HEXAGON_TOOLCHAIN}"
     "-DCMAKE_CXX_STANDARD=17"
     "-DTVM_FFI_USE_LIBBACKTRACE=OFF"
+    "-DTVM_FFI_USE_THREADS=OFF"
+    "-DTVM_FFI_USE_DL_LIBS=OFF"
     "-DUSE_RPC=ON"
     "-DUSE_CPP_RPC=ON"
     "-DUSE_HEXAGON=ON"
@@ -81,6 +83,8 @@ ExternalProject_Add(android_tvm_runtime_rpc
     "-DUSE_HEXAGON_ARCH=${USE_HEXAGON_ARCH}"
     "-DCMAKE_CXX_STANDARD=17"
     "-DTVM_FFI_USE_LIBBACKTRACE=OFF"
+    "-DTVM_FFI_USE_THREADS=OFF"
+    "-DTVM_FFI_USE_DL_LIBS=OFF"
     "-DUSE_RPC=ON"
     "-DUSE_CPP_RPC=ON"
     "-DUSE_HEXAGON=ON"
@@ -133,6 +137,8 @@ ExternalProject_Add(hexagon_tvm_runtime_rpc
     "-DHEXAGON_EXTERNAL_LIBS_SHA=${HEXAGON_EXTERNAL_LIBS_SHA}"
     "-DCMAKE_CXX_STANDARD=17"
     "-DTVM_FFI_USE_LIBBACKTRACE=OFF"
+    "-DTVM_FFI_USE_THREADS=OFF"
+    "-DTVM_FFI_USE_DL_LIBS=OFF"
     "-DUSE_RPC=OFF"
     "-DUSE_HEXAGON=ON"
     "-DUSE_HEXAGON_RPC=ON"
diff --git a/apps/hexagon_launcher/cmake/android/CMakeLists.txt 
b/apps/hexagon_launcher/cmake/android/CMakeLists.txt
index 42b5feb03a..ea02efd144 100644
--- a/apps/hexagon_launcher/cmake/android/CMakeLists.txt
+++ b/apps/hexagon_launcher/cmake/android/CMakeLists.txt
@@ -79,6 +79,8 @@ ExternalProject_Add(android_tvm_runtime
   "-DUSE_HEXAGON_ARCH=${USE_HEXAGON_ARCH}"
   "-DUSE_HEXAGON_SDK=${USE_HEXAGON_SDK}"
   "-DTVM_FFI_USE_LIBBACKTRACE=OFF"
+  "-DTVM_FFI_USE_THREADS=OFF"
+  "-DTVM_FFI_USE_DL_LIBS=OFF"
   "-DUSE_LLVM=OFF"
   "-DUSE_RPC=OFF"
   INSTALL_COMMAND ""
diff --git a/apps/hexagon_launcher/cmake/hexagon/CMakeLists.txt 
b/apps/hexagon_launcher/cmake/hexagon/CMakeLists.txt
index d17b5186aa..e250f5a3cc 100644
--- a/apps/hexagon_launcher/cmake/hexagon/CMakeLists.txt
+++ b/apps/hexagon_launcher/cmake/hexagon/CMakeLists.txt
@@ -90,6 +90,8 @@ ExternalProject_Add(static_hexagon_tvm_runtime
   "-DUSE_HEXAGON_ARCH=${USE_HEXAGON_ARCH}"
   "-DUSE_HEXAGON_SDK=${USE_HEXAGON_SDK}"
   "-DTVM_FFI_USE_LIBBACKTRACE=OFF"
+  "-DTVM_FFI_USE_THREADS=OFF"
+  "-DTVM_FFI_USE_DL_LIBS=OFF"
   "-DUSE_LLVM=OFF"
   "-DUSE_RPC=OFF"
   "-DUSE_CUSTOM_LOGGING=ON"
diff --git a/include/tvm/ir/expr.h b/include/tvm/ir/expr.h
index 09c0363986..fd2e0e6a51 100644
--- a/include/tvm/ir/expr.h
+++ b/include/tvm/ir/expr.h
@@ -465,8 +465,7 @@ class GlobalVarNode : public RelaxExprNode {
     return equal(name_hint, other->name_hint, false, "name_hint");
   }
 
-  uint64_t SHash(uint64_t init_hash,
-                 ffi::TypedFunction<uint64_t(AnyView, uint64_t, bool)> hash) 
const {
+  int64_t SHash(int64_t init_hash, ffi::TypedFunction<int64_t(AnyView, 
int64_t, bool)> hash) const {
     return hash(name_hint, init_hash, false);
   }
 
diff --git a/include/tvm/ir/module.h b/include/tvm/ir/module.h
index 3f70b2e255..2ccddc85dc 100644
--- a/include/tvm/ir/module.h
+++ b/include/tvm/ir/module.h
@@ -146,8 +146,8 @@ class IRModuleNode : public Object {
 
   TVM_DLL bool SEqual(const IRModuleNode* other,
                       ffi::TypedFunction<bool(AnyView, AnyView, bool, 
AnyView)> equal) const;
-  TVM_DLL uint64_t SHash(uint64_t init_hash,
-                         ffi::TypedFunction<uint64_t(AnyView, uint64_t, bool)> 
hash) const;
+  TVM_DLL int64_t SHash(int64_t init_hash,
+                        ffi::TypedFunction<int64_t(AnyView, int64_t, bool)> 
hash) const;
 
   /*!
    * \brief Add a function to the global environment.
diff --git a/include/tvm/relax/expr.h b/include/tvm/relax/expr.h
index 9b5a3176f4..9b4fa91379 100644
--- a/include/tvm/relax/expr.h
+++ b/include/tvm/relax/expr.h
@@ -365,9 +365,8 @@ class VarNode : public LeafExprNode {
            equal(struct_info_, other->struct_info_, false, "struct_info_");
   }
 
-  uint64_t SHash(uint64_t init_hash,
-                 ffi::TypedFunction<uint64_t(AnyView, uint64_t, bool)> hash) 
const {
-    uint64_t hash_value = init_hash;
+  int64_t SHash(int64_t init_hash, ffi::TypedFunction<int64_t(AnyView, 
int64_t, bool)> hash) const {
+    int64_t hash_value = init_hash;
     hash_value = hash(vid, hash_value, false);
     hash_value = hash(struct_info_, hash_value, false);
     return hash_value;
@@ -647,8 +646,7 @@ class VarBindingNode : public BindingNode {
 
   bool SEqual(const VarBindingNode* other,
               ffi::TypedFunction<bool(AnyView, AnyView, bool, AnyView)> equal) 
const;
-  uint64_t SHash(uint64_t init_hash,
-                 ffi::TypedFunction<uint64_t(AnyView, uint64_t, bool)> hash) 
const;
+  int64_t SHash(int64_t init_hash, ffi::TypedFunction<int64_t(AnyView, 
int64_t, bool)> hash) const;
   TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.expr.VarBinding", VarBindingNode, 
BindingNode);
 };
 
diff --git a/src/ir/module.cc b/src/ir/module.cc
index b0104ba14d..e7f2511038 100644
--- a/src/ir/module.cc
+++ b/src/ir/module.cc
@@ -81,9 +81,9 @@ bool IRModuleNode::SEqual(const IRModuleNode* other,
   return true;
 }
 
-uint64_t IRModuleNode::SHash(uint64_t init_hash,
-                             ffi::TypedFunction<uint64_t(AnyView, uint64_t, 
bool)> hash) const {
-  uint64_t hash_value = init_hash;
+int64_t IRModuleNode::SHash(int64_t init_hash,
+                            ffi::TypedFunction<int64_t(AnyView, int64_t, 
bool)> hash) const {
+  int64_t hash_value = init_hash;
   hash_value = hash(this->attrs, hash_value, false);
   hash_value = hash(this->global_infos, hash_value, false);
 
@@ -96,7 +96,8 @@ uint64_t IRModuleNode::SHash(uint64_t init_hash,
   // sort by the hash key of the keys.
   std::sort(temp.begin(), temp.end(),
             [](const KV& lhs, const KV& rhs) { return std::get<0>(lhs) < 
std::get<0>(rhs); });
-  hash_value = hash(static_cast<uint64_t>(temp.size()), hash_value, false);
+  uint64_t temp_size = static_cast<uint64_t>(temp.size());
+  hash_value = hash(static_cast<int64_t>(temp_size), hash_value, false);
   // first need to define the GlobalVar in the order of the keys
   for (size_t i = 0; i < temp.size(); ++i) {
     hash_value = hash(std::get<1>(temp[i]), hash_value, true);
diff --git a/src/relax/ir/expr.cc b/src/relax/ir/expr.cc
index 2c681b00bc..1d5b715cfb 100644
--- a/src/relax/ir/expr.cc
+++ b/src/relax/ir/expr.cc
@@ -459,9 +459,9 @@ bool VarBindingNode::SEqual(const VarBindingNode* other,
   }
 }
 
-uint64_t VarBindingNode::SHash(uint64_t init_hash,
-                               ffi::TypedFunction<uint64_t(AnyView, uint64_t, 
bool)> hash) const {
-  uint64_t hash_value = init_hash;
+int64_t VarBindingNode::SHash(int64_t init_hash,
+                              ffi::TypedFunction<int64_t(AnyView, int64_t, 
bool)> hash) const {
+  int64_t hash_value = init_hash;
   if (value->IsInstance<FunctionNode>()) {
     hash_value = hash(var, hash_value, true);
     hash_value = hash(value, hash_value, false);
diff --git a/tests/python/ir/test_ir_container.py 
b/tests/python/ir/test_ir_container.py
index 12502b6e6c..cd47766159 100644
--- a/tests/python/ir/test_ir_container.py
+++ b/tests/python/ir/test_ir_container.py
@@ -97,7 +97,6 @@ def test_getattr_map():
 def test_in_container():
     arr = tvm.runtime.convert(["a", "b", "c"])
     assert "a" in arr
-    assert tvm.tir.StringImm("a") in arr
     assert "d" not in arr
 
 

Reply via email to