[llvm] [SystemZ] XPLINK64: emit narrow sign/zero-extend instructions for sub-i32 formal args (PR #206833)

Zibi Sarbinowski via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 28 09:38:36 PDT 2026


zibi2 wrote:

After further investigation, the i32 rule is not dead: bare i32 arguments without `signext/zeroext` flags (e.g. `sitofp` sources, struct-coerced integers, plain integer comparisons) bypass `CC_XPLINK_Promote_i32` entirely and require `CCAssignToRegAndStack<[R1L,R2L,R3L]>` to land in a register. Removing the rule causes them to fall through to the stack fallback, producing wrong codegen (`l R,offset(4)` instead of a register reference). I've added a test `zos-xplink64-bare-i32-arg.ll` that demonstrates the regression and reverted the removal.

https://github.com/llvm/llvm-project/pull/206833


More information about the llvm-commits mailing list