TermiNexus a502c7242f fix(mlir): 类型文本缓冲按长度给足 + 截断响亮报错(系统性)
根因:MLIR 把具名结构体内联为完整字段体(`!llvm.struct<"名", (i32, !llvm.ptr, …)>`),
单个类型文本可达数百字节,远长于 LLVM 形态的 `%"名"` 引用(十几字节);而 builders
仍按旧的短类型尺寸分配(128/256),指令行里的类型被截断 → 畸形 MLIR。
实测:alloca 行类型被 128 字节缓冲截断,mlir-opt 报
"unbalanced '(' character in pretty dialect name"。

- __types.vp:新增截断溢出标志 _MlirTypeTrunc(_strappend/_MlirAppendN 写入
  被截断时置位),TypePrint / MlirTypeText 渲染后检查并 MlirFail —— 任何截断
  都不再静默产出畸形 MLIR
- __builder.vp:新增 _TY_TEXT_CAP(512)/_LINE_CAP(2560),全部指令行缓冲(alloca
  /ret/load/store/各类 cast/gep/icmp/fcmp/select/atomicrmw/cmpxchg/va_arg/switch
  /case/inline_asm…)改为 _LINE_CAP;build_call / build_call_indirect 的实参表
  与行缓冲按实参个数与实际长度动态分配(原固定 1024/2048 会在两个以上结构体
  实参时静默截断)
- __values.vp:ValuePrint 的类型缓冲 256 → 512
2026-10-03 21:07:55 +08:00
2026-09-30 00:25:55 +08:00
2026-08-17 11:01:35 +08:00
2026-09-29 17:00:36 +08:00
2026-09-29 17:00:20 +08:00
2026-09-29 16:59:46 +08:00
2026-09-29 16:59:21 +08:00
2026-09-29 16:47:50 +08:00
2026-09-29 16:47:20 +08:00
S
Description
GVSDS(TM) Viper SE Runtime Environment and Library (VRTE)
15 MiB
0 Stars 1 Watchers 0 Forks
Languages
C++ 76.8%
C 22%
CMake 1.2%