rjmccall added a comment. In D75169#1926545 <https://reviews.llvm.org/D75169#1926545>, @pratlucas wrote:
> Hi @rjmccall, > I agree those kind of tweaks do not look good. The issue here, though, is > that argument coercion currently ignores the target's endian information when > performing coercion through memory. > This happens for any type that requires memory coercion, so unfortunately > using `[1 x i32]` does not do the trick. Oh, wait, AAPCS wants half values to be passed in the *least* significant bits of a GPR, even on big-endian machines? That's certainly more convenient, but it's a weird inconsistency with the otherwise iron rule of the calling convention, which that it's exactly as if you laid all of the arguments out in memory and then popped the first four 32-bit values off. We're talking about a calling convention here that literally skips registers in order to "align" arguments. Can we not just coerce to i16? Will LLVM not pass an i16 in the least-significant bits of a register? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D75169/new/ https://reviews.llvm.org/D75169 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits