修正了 TPC 的一些错误,包括 Test 维护后 TPV 无法重新编译或重编译后越界的部分问题
This commit is contained in:
@@ -377,6 +377,12 @@ class ExprHandle(BaseHandle):
|
||||
if VarName in Gen.global_struct_class:
|
||||
Gen.var_struct_class[VarName] = Gen.global_struct_class[VarName]
|
||||
return VarPtr
|
||||
# 防御性恢复:对于 double-pointer(如 ndarray**,pointee 是 PointerType)
|
||||
# 或其他非结构体类型,若 global_struct_class 已记录该变量的类名,
|
||||
# 也恢复 var_struct_class。这确保方法调用能查找到正确的特化类
|
||||
# (如 ndarray[double]),而非 fallback 到 opaque 基础类型。
|
||||
if VarName in Gen.global_struct_class and VarName not in Gen.var_struct_class:
|
||||
Gen.var_struct_class[VarName] = Gen.global_struct_class[VarName]
|
||||
loaded: ir.Value = Gen._load(VarPtr, name=VarName)
|
||||
# 大端局部变量:读取时 bswap 还原
|
||||
loaded = Gen._apply_bswap_if_big(loaded, getattr(Gen, 'local_var_byteorders', {}).get(VarName, ""), f"bswap_load_{VarName}")
|
||||
|
||||
Reference in New Issue
Block a user