chore(gen): 移除全部 [DIAG] 调试打印

This commit is contained in:
TermiNexus committed 2026-08-19 10:11:37 +08:00
1 parent 63caf152c2
commit b2e69c2f75
3 files changed
-47

No files matched your search

-5
View File
@@ -238,9 +238,4 @@ class TypeGenBase:
if rg_ta is not None:
rv_d = rg_ta
break
# 诊断(8fbba list[str].get 返回类型不匹配定位):T 替换结果。
# list[str] 特化时 T 应替换为 str;若替换为 Value 则泛型上下文
# GenericTypeArgs 被嵌套特化污染。
if string.strcmp(name, "T") == 0:
stdio.printf("[DIAG] resolve_generic_type_name: T -> %s\n", rv_d)
return rv_d
-3
View File
@@ -963,9 +963,6 @@ class TypeGenResolve(TypeGenBase.TypeGenBase):
if gp_tpn is not None and string.strcmp(nm.id, gp_tpn) == 0:
gp_ta: str = self.GenericTypeArgs.get(gp_i)
if gp_ta is not None:
# 诊断(8fbba list[str].get 类型不匹配):方法体 T 替换
# 的实际值。list[str] 特化时 T→str;T→Value 则上下文污染。
stdio.printf("[DIAG] T 替换: %s -> %s\n", nm.id, gp_ta)
# 自映射/污染实参防护(泛型循环套用):
# 1) 实参与参数名完全一致(T→T)
# 2) 实参串包含任一类型参数名(如 "T | t.CPtr"、" T "、
-39
View File
@@ -352,15 +352,6 @@ class Translator:
return 1
llvmlite.add_param(pool, printf_func, i8_ptr_ty, "fmt")
printf_func.IsVarArg = 1
# 诊断(builtins.vp dump 卡死根因排查):printf.fmt Param 创建后立即
# 校验其 Next——区分"创建即损坏"(create_declare/add_param 环节问题)
# 与"后续被越界写破坏"(dump 时遍历成环)。next=0 为正常。
dbg_p0: llvmlite.Param | t.CPtr = llvmlite.function_get_param_head(printf_func)
if dbg_p0 is not None:
dbg_p0n: llvmlite.Param | t.CPtr = llvmlite.param_get_next(dbg_p0)
stdio.printf("[DIAG] printf.fmt 创建后: param=%llu next=%llu\n",
t.CUInt64T(dbg_p0), t.CUInt64T(dbg_p0n))
# 声明 LLVM va_start/va_end intrinsic(供 *args 函数体内使用)
# declare void @llvm.va_start(i8*)
# declare void @llvm.va_end(i8*)
@@ -380,7 +371,6 @@ class Translator:
if malloc_func is not None:
i64_ty: llvmlite.LLVMType | t.CPtr = llvmlite.Int64(pool)
llvmlite.add_param(pool, malloc_func, i64_ty, "size")
stdio.printf("[DIAG] translate: 声明完成\n")
# 检查用户是否定义了 main 函数
has_user_main: int = 0
@@ -395,7 +385,6 @@ class Translator:
if string.strcmp(fd.name, "main") == 0:
has_user_main = 1
break
stdio.printf("[DIAG] translate: main 检查完成(has_user_main=%d)\n", has_user_main)
if self._declare_only != 0:
# Phase 1a-pre(2=import扫描) / Phase 1a(1=struct注册): 只处理模块级,不创建 main 函数和 builder
@@ -430,7 +419,6 @@ class Translator:
"""委托 HandlesMain.translate_children() 翻译模块级语句(trans 单参)"""
# 全量翻译模式下,先处理导入语句,再创建前向声明,解决前向引用问题
if self._declare_only == 0:
stdio.printf("[DIAG] 模块级: 开始\n")
# 预处理导入语句,确保 _imported_modules 和 _from_imports 已填充
# (前向声明需要解析类型注解,如 t.CArray[str] 依赖 t 模块已导入)
# 记录最后处理的 import 行号,供 vpi 注入错误上下文帧定位
@@ -450,7 +438,6 @@ class Translator:
cur_imp_lineno = child.lineno
self.ImportsH.HandleImportFromModule(child)
self.ImportsH.HandleImportFromNames(child)
stdio.printf("[DIAG] 模块级: import 处理完成\n")
# 对齐 TPC _inject_auto_imports:检测源文件对 list/dict 容器的使用
# (裸名注解 d: dict / 构造 dict(...) / 下标 list[T]),自动把容器
# 类标记为可见结构体。背景:_list.vp/_dict.vp 定义内建容器类且已由
@@ -459,12 +446,10 @@ class Translator:
# `d: dict` 注解 resolve_annotation_type 时 is_struct_visible=0
# 解析失败(DictTest 的 "变量类型注解解析失败")。
self._inject_auto_container_visibility(pool, tree)
stdio.printf("[DIAG] 模块级: 容器可见性完成\n")
# 扫描当前模块的 CTypedef 声明已由 Phase1 1b 文本扫描注册
# (RegisterCTypedefFromSource,见 Phase1Main.vp)——AST 字符串字段
# token 零拷贝指向 src_buf,跨阶段内容不稳定,此处 AST 扫描读 attr
# 会 0xC0000005(stdint.vp 崩溃根因),故移除。
stdio.printf("[DIAG] 模块级: CTypedef 扫描完成(文本扫描替代)\n")
# 跨模块 .vpi 注入:加载依赖模块的 .vpi 文件,
# 将函数 declare 声明注入到当前模块,解决跨模块函数调用找不到函数的问题
# 严格保证 declare_only == 0 时才注入(避免 Phase A-pre-inc 死锁)
@@ -476,7 +461,6 @@ class Translator:
pool, mod, self._imported_modules, self._from_imports,
HandlesType.get_temp_dir(), self)
HandlesType.pop_trace()
stdio.printf("[DIAG] 模块级: vpi 注入完成\n")
# 预注册模块级变量(AnnAssign/Assign)到 SymTab
# 解决时序问题:class Logger 的 __init__ 引用 _mbuddy 时,
# _mbuddy 的 AnnAssign 在 AST 中位于 class Logger 之后,
@@ -492,12 +476,9 @@ class Translator:
kd_mv: int = child.kind()
if kd_mv == ast.ASTKind.AnnAssign or kd_mv == ast.ASTKind.Assign:
HandlesMain.handle_module_level_var(self, child)
stdio.printf("[DIAG] 模块级: 变量预注册完成\n")
# 创建前向声明
HandlesFunctions.forward_declare_functions(self, tree)
stdio.printf("[DIAG] 模块级: 前向声明完成\n")
added: int = HandlesMain.translate_children(self, tree)
stdio.printf("[DIAG] 模块级: translate_children 完成\n")
# ============================================================
# 容器模块自动可见性注入(对齐 TPC _inject_auto_imports)
@@ -609,26 +590,6 @@ class Translator:
return
if _mbuddy is None:
return
# 诊断(builtins.vp dump 卡死根因排查,仅 stub 模式打印一次):
# 模块函数清单 + 每个函数首个参数地址/Next 值(步数上限防成环死循环)。
# 确认 printf declare 的创建上下文与 Params 链损坏状态。
if mode == llvmlite.OUTPUT_STUB:
dbg_f: llvmlite.Function | t.CPtr = llvmlite.module_get_func_head(self.Module)
dbg_steps: int = 0
while dbg_f is not None:
dbg_steps += 1
if dbg_steps > 100000:
stdio.printf("[DIAG] 模块函数链遍历超限(dump_ir 诊断)\n")
stdlib.exit(1)
dbg_name: str = llvmlite.function_get_name(dbg_f)
dbg_p: llvmlite.Param | t.CPtr = llvmlite.function_get_param_head(dbg_f)
if dbg_p is not None:
dbg_pn: llvmlite.Param | t.CPtr = llvmlite.param_get_next(dbg_p)
stdio.printf("[DIAG] 模块函数: %s param0=%llu next=%llu\n",
dbg_name, t.CUInt64T(dbg_p), t.CUInt64T(dbg_pn))
else:
stdio.printf("[DIAG] 模块函数: %s (无参数)\n", dbg_name)
dbg_f = llvmlite.function_get_next(dbg_f)
buf[0] = '\0'
llvmlite.LLVMModulePrint(buf, size, self.Module, _mbuddy, mode)