fix(TransPyV): 修正形参/字段链节点的注解为 llvmlite.ParamNode*
c 类(源码违规):这些变量由 new_param_node 构造、或取自 get_struct_fields / param_list_append / function_get_param_head,实际是 llvmlite.ParamNode 链节点, 注解却写成 llvmlite.Function*。旧的无条件指针 bitcast 掩盖了该错误,严格指针规则下暴露。 涉及:VarGenMixin / CallGenVt / VpiReader / ClassGenEnum / ClassGenVTable / ExprGenName / FuncGenMixin / FuncGenDef / TypeGenResolve / TypeSpec / StmtGenCifMixin / AssignGenMixin(纯注解替换,零语义变化)。15 行。
This commit is contained in:
1 parent
70448f4590
commit
d579d70113
12 files changed
+41
-35
No files matched your search
@@ -956,15 +956,15 @@ novirtual class ClassGenEnum(ClassGenBase.ClassGenBase):
|
||||
i32_ty: llvmlite.LLVMType* = llvmlite.Int32(pool)
|
||||
i64_ty: llvmlite.LLVMType* = llvmlite.Int64(pool)
|
||||
|
||||
first_node: llvmlite.Function* = None
|
||||
tail_node: llvmlite.Function* = None
|
||||
first_node: llvmlite.ParamNode* = None
|
||||
tail_node: llvmlite.ParamNode* = None
|
||||
|
||||
for pos in range(total_positions):
|
||||
psize: int = position_max_sizes[pos]
|
||||
field_ty: llvmlite.LLVMType* = i32_ty
|
||||
if psize > 4:
|
||||
field_ty = i64_ty
|
||||
pnode: llvmlite.Function* = llvmlite.new_param_node(pool, field_ty)
|
||||
pnode: llvmlite.ParamNode* = llvmlite.new_param_node(pool, field_ty)
|
||||
if pnode is None:
|
||||
continue
|
||||
tail_node = llvmlite.param_list_append(first_node, tail_node, pnode)
|
||||
|
||||
@@ -305,10 +305,10 @@ novirtual class ClassGenVTable(ClassGenBase.ClassGenBase):
|
||||
i8_ty: llvmlite.LLVMType* = llvmlite.Int8(pool)
|
||||
i8_ptr_ty: llvmlite.LLVMType* = llvmlite.Ptr(pool, i8_ty)
|
||||
|
||||
first_node: llvmlite.Function* = None
|
||||
tail_node: llvmlite.Function* = None
|
||||
first_node: llvmlite.ParamNode* = None
|
||||
tail_node: llvmlite.ParamNode* = None
|
||||
for i in range(method_count):
|
||||
pnode: llvmlite.Function* = llvmlite.new_param_node(pool, i8_ptr_ty)
|
||||
pnode: llvmlite.ParamNode* = llvmlite.new_param_node(pool, i8_ptr_ty)
|
||||
if pnode is None:
|
||||
continue
|
||||
tail_node = llvmlite.param_list_append(first_node, tail_node, pnode)
|
||||
@@ -1120,10 +1120,10 @@ novirtual class ClassGenVTable(ClassGenBase.ClassGenBase):
|
||||
vt_i8_ty: llvmlite.LLVMType* = llvmlite.Int8(pool)
|
||||
vt_i8_ptr_ty: llvmlite.LLVMType* = llvmlite.Ptr(pool, vt_i8_ty)
|
||||
|
||||
vt_first_node: llvmlite.Function* = None
|
||||
vt_prev_node: llvmlite.Function* = None
|
||||
vt_first_node: llvmlite.ParamNode* = None
|
||||
vt_prev_node: llvmlite.ParamNode* = None
|
||||
for vti in range(vt_method_count):
|
||||
vtnode: llvmlite.Function* = llvmlite.new_param_node(pool, vt_i8_ptr_ty)
|
||||
vtnode: llvmlite.ParamNode* = llvmlite.new_param_node(pool, vt_i8_ptr_ty)
|
||||
if vtnode is None:
|
||||
continue
|
||||
if vt_first_node is None:
|
||||
|
||||
Reference in new issue
Block a user