TermiNexus
9fe88831f3
fix(codegen): 修复模块级 str 字面量全局的初始化器缺失
模块级 `X: str = "字面量"` 有两条路径都没写出正确初始化器:
1) 新建全局分支在创建 GlobalVar 之后又查 `VarName not in Gen.module.globals`
(此时刚登记,条件恒假),于是永远走 else 分支、从不写初始化器:全局退化成
无初值的声明,第二遍再被升级成 `common global i8* null`,字符串常量沦为无人
引用的 @NAME_str。只读常量(如 BuildPipeline.MLIR_OPT_CMD)在 mlir 后端
strlen(NULL) 直接崩(ASan 0x0)。
2) 把既有 external 声明升级为本模块定义的分支一律设 common,但 LLVM 要求
common 全局的初始化器必须是零值,字符串字面量会触发 verifier 报错。
新增 _BuildStringPtrInitializer 统一产出「指向 @{Name}_str 常量数组首元素的
GEP」,两处改用它。
验证:TransPyV 自举通过;TPV 顺序回归 77/77 全通过。
2026-10-05 09:26:26 +08:00
..
2026-09-14 13:42:14 +08:00
2026-10-05 09:26:26 +08:00
2026-09-28 13:57:04 +08:00
2026-10-05 09:25:02 +08:00
2026-09-26 19:27:22 +08:00
2026-09-30 23:47:36 +08:00
2026-09-12 11:51:42 +08:00
2026-10-03 00:14:51 +08:00
2026-10-03 00:14:51 +08:00
2026-08-17 09:36:38 +08:00
2026-08-17 09:36:38 +08:00