根因: 变参按窄类型(i32)传入, LLVM 只写 4 字节进 8 字节栈槽, 高 4 字节残留旧数据; viperlib %d 强制 va_arg 读 i64 暴露残留高位(如 0x400921FB00001000, 高位是 PI 残留)。 修复: found_func.IsVarArg==1 且参数在变参位时提升, 对齐 TPC/Python-llvmlite ABI 自动提升。 SprintfTest R1-R4 PASS, DefineTest PAGE=4096 验证通过。
根因: 变参按窄类型(i32)传入, LLVM 只写 4 字节进 8 字节栈槽, 高 4 字节残留旧数据; viperlib %d 强制 va_arg 读 i64 暴露残留高位(如 0x400921FB00001000, 高位是 PI 残留)。 修复: found_func.IsVarArg==1 且参数在变参位时提升, 对齐 TPC/Python-llvmlite ABI 自动提升。 SprintfTest R1-R4 PASS, DefineTest PAGE=4096 验证通过。