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
@@ -1419,8 +1419,10 @@ def _resolve_vpi_ret_annot_str(pool: memhub.MemBuddy*,
|
||||
inner_len_t += 1
|
||||
if ret_annot[6 + inner_len_t] != ']' or inner_len_t == 0:
|
||||
return None
|
||||
tup_head_t: llvmlite.Function* = None
|
||||
tup_tail_t: llvmlite.Function* = None
|
||||
# tuple 返回类型的字段链表是 llvmlite.ParamNode(new_param_node / paramnode_set_next /
|
||||
# Struct 形参均为 rawptr[ParamNode])——原先误注解为 Function*。
|
||||
tup_head_t: llvmlite.ParamNode* = None
|
||||
tup_tail_t: llvmlite.ParamNode* = None
|
||||
tup_count_t: int = 0
|
||||
p_t: sizet = 0
|
||||
while p_t < inner_len_t:
|
||||
@@ -1444,7 +1446,7 @@ def _resolve_vpi_ret_annot_str(pool: memhub.MemBuddy*,
|
||||
stdlib.free(seg_buf_t)
|
||||
if seg_ty_t is None:
|
||||
return None
|
||||
tup_node_t: llvmlite.Function* = llvmlite.new_param_node(pool, seg_ty_t)
|
||||
tup_node_t: llvmlite.ParamNode* = llvmlite.new_param_node(pool, seg_ty_t)
|
||||
if tup_node_t is None:
|
||||
return None
|
||||
if tup_head_t is None:
|
||||
|
||||
Reference in new issue
Block a user