[clang] [llvm] [Clang][ABI][X86] Do not emit zeroext/signext for return values (PR #232729)

Phoebe Wang via cfe-commits cfe-commits at lists.llvm.org
Sun Oct 18 02:36:59 PDT 2026


phoebewang wrote:

> except for `bool` (which stays zeroext, as it requires zero-extension to 8 bits) and Darwin.

Does i2~i7 follow the same rule?

> However, this _does_ change behavior for non-i8/i16 types. Specifically, it changes `_BitInt` types to have unspecified high bits, instead of performing a partial sign/zero extension to 8, 16 or 32 bits.

Does this change i32/i64 type or not? Is it limited to `_BitInt(N)` where N < 32?

> Because the only case with actual behavior change is `_BitInt`, I'm not bothering with `-fclang-abi-compat` for this change. We explicitly document `_BitInt` as not ABI stable at this point.

Sounds like if we exclude `_BitInt` type in the patch, it can be an NFC change?

> This change does not affect handling of arguments.

What about when passing the result immediately as an argument?

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


More information about the cfe-commits mailing list