TermiNexus
7ee6ebe6b0
fix(类型转换): int→i1 目标改为真值归一化 != 0,与 bool(x)/if 条件同判据
类别:a(编译器缺陷)。TPC 侧此前对 i1 目标一律 trunc(取最低位):运行时值 2 →
最低位 0 → false,而同一值在 `if 2:` / `bool(2)`(icmp ne 0)为真 ⇒ 条件上下文与
落存储/强转两处结论相反(静默语义分裂)。
- MemoryOps._CoerceIntToI1(新增,唯一判据源):非 i1 整数 → `icmp ne x, 0`。
- MemoryOps._coerce_value:窄化且目标位宽 == 1 时走 _CoerceIntToI1。
- HandlesAnnAssign._StoreWithCoerce:同上(self.字段 / obj.字段 落存储)。
- HandlesExprCall._HandleTypeCastLlvm:显式强转目标 i1 时同上。
与 TransPyV 侧同批修复(coerce_to_type / _translate_t_type_cast)对齐。
注:TPC 的 `bool` 注解仍是 i8(t.CBool.Size=8),故 `b: bool = 2` 仍按 i8 保位存储
(int(b)=2);本次只覆盖**真 i1 目标**,双端 bool 位宽差异见
SymbolUtils.py:1218-1223 已记录的全局语义分裂。
2026-09-30 15:14:31 +08:00
..
2026-08-21 12:36:00 +08:00
2026-09-30 15:14:31 +08:00
2026-08-17 09:36:38 +08:00
2026-09-30 11:57:07 +08:00
2026-09-30 09:53:41 +08:00
2026-09-27 00:19:44 +08:00
2026-09-30 14:45:55 +08:00
2026-09-26 19:27:22 +08:00
2026-09-30 10:58:23 +08:00
2026-08-17 09:36:38 +08:00
2026-09-30 09:53:41 +08:00
2026-09-29 13:00:11 +08:00
2026-09-30 14:42:56 +08:00
2026-09-30 14:42:56 +08:00
2026-09-30 15:14:31 +08:00
2026-09-11 22:47:21 +08:00
2026-09-30 09:53:41 +08:00
2026-09-27 15:16:08 +08:00
2026-09-26 19:27:22 +08:00
2026-09-28 13:57:04 +08:00
2026-09-30 09:53:41 +08:00
2026-08-17 09:36:38 +08:00
2026-09-30 14:55:40 +08:00
2026-09-30 14:42:56 +08:00
2026-08-17 09:36:38 +08:00
2026-09-28 15:10:39 +08:00
2026-09-26 19:27:22 +08:00
2026-08-17 09:36:38 +08:00
2026-09-29 17:35:56 +08:00
2026-08-03 02:00:49 +08:00
2026-09-26 19:27:22 +08:00