efriedma-quic wrote:

> My understanding is that you refer to the following part of the 
> [specification](https://riscv.org/wp-content/uploads/2015/01/riscv-calling.pdf):

Yes.  For example, on RISC-V, the function `long f(unsigned g) { return (int)g; 
}` compiles to just a "ret".

> clang would now guarantee sign or zero extension for all integral function 
> parameters.

clang would guarantee sign-extension for signed parameters, and zero-extension 
for unsigned parameters. Which is not the same as the RISCV ABI rules.

> That is, we will do zero extension for uint argument here. This will 
> guarantee correct value if 'foo' is a kernel function.

A kernel function will expect the uint to be sign-extended, not zero-extended.

https://github.com/llvm/llvm-project/pull/84874
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to