[all-commits] [llvm/llvm-project] 46fc5b: [CIR] Accept `_BitInt` wider than 128 bits in x86_...
Adam Smith via All-commits
all-commits at lists.llvm.org
Fri Sep 11 14:19:48 PDT 2026
Branch: refs/heads/users/adams381/cir-callconv-x86_64-bitint-wide
Home: https://github.com/llvm/llvm-project
Commit: 46fc5bdf707e8addec5d50c3eb48dec001c1adb9
https://github.com/llvm/llvm-project/commit/46fc5bdf707e8addec5d50c3eb48dec001c1adb9
Author: Adam Smith <adams at nvidia.com>
Date: 2026-09-11 (Fri, 11 Sep 2026)
Changed paths:
M clang/include/clang/CIR/Dialect/IR/CIROps.td
M clang/lib/CIR/Dialect/Transforms/CallConvLoweringPass.cpp
M clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
M clang/test/CIR/CodeGen/bitint-split-storage-nyi.c
M clang/test/CIR/CodeGen/bitint.c
A clang/test/CIR/CodeGen/call-conv-lowering-x86_64-bitint.c
M clang/test/CIR/CodeGenBuiltins/builtin-bit.cpp
M clang/test/CIR/Transforms/abi-lowering/x86_64-bitint.cir
M clang/test/CIR/Transforms/abi-lowering/x86_64-int-nyi.cir
Log Message:
-----------
[CIR] Accept `_BitInt` wider than 128 bits in x86_64 callconv lowering
With byval in place, a `_BitInt` wider than 128 bits can classify
Indirect and flow through the same byval/sret path as an oversized
aggregate.
That turned up a latent bug, fixed here since it was not reachable or
testable before: the byval/sret pointee type was using the raw declared
width instead of the padded storage width (e.g. `i200` instead of
`i256`), understating the copy size.
Widths whose padded storage integer is not a whole number of 16 bytes,
such as `_BitInt(129)` at `i192`, still have no in-memory layout in CIR
and now reach that gap through the byval and sret pointee instead of
through the classifier. They stay NYI.
Drop the opt-out from the three CIR lit tests gated on this.
Assisted-by: Cursor / claude-opus-5
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list