Files
TransPyC/lib/core
TermiNexus d305d3369b fix(tpc): IR 边界补「指针操作数类型守卫」,非指针值不再抛裸 AttributeError
类别 a(编译器缺陷/诊断缺失):llvmlite 的 IRBuilder.gep 不做任何类型校验,
GEPInstr.__init__ 直接读 ptr.type.is_opaque;LoadInstr 同族亦同(instructions.py
:440/:558)。上游一旦把非指针值(典型 i32)当指针传入,抛出的就是裸
`AttributeError: 'IntType' object has no attribute 'is_opaque'` —— 报文里既没有
指令名、没有操作数、也没有当前语句,无法定位发射点(现场:Phase2 翻译
TransPyV/App/lib/core/Gen/TranslatorGenMixin.vp 时只带 713/787/788 三条语句位置)。

- BaseGen:新增 RequirePointerOperand(IR 边界先行判定,不做兜底转换)与
  _GuardIrBuilder(无条件覆盖 gep/load/store,合法 IR 与原生 ir.IRBuilder 一致);
  _HotspotSiteBuilder 改继承 _GuardIrBuilder;_NewIrBuilder 未启用热点统计时
  由原生 ir.IRBuilder 改为返回 _GuardIrBuilder。
- MemoryOps:_EmitLoad/_EmitStore 的 volatile 分支直接构造 LoadInstr/StoreInstr,
  绕过了 builder.load/store 的类型守卫,补同一判定(非指针 ptr 的 store 会静默
  生成非法 IR 文本)。

报文含:指令名、操作数类型、操作数名、GEP 的 name=(发射点标识)+ 当前节点位置。
2026-09-29 19:24:27 +08:00
..
2026-07-18 19:25:40 +08:00
2026-07-18 19:25:40 +08:00
2026-07-18 19:25:40 +08:00
2026-07-18 19:25:40 +08:00
2026-07-18 19:25:40 +08:00