aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/TestModuleFileExtension.cpp
diff options
context:
space:
mode:
authorTrevor Gross <tgross@intrepidcs.com>2025-07-17 04:30:36 -0500
committerGitHub <noreply@github.com>2025-07-17 11:30:36 +0200
commita78a0f8d204393a0cce367b63395bad90311c1b8 (patch)
tree246a764e61af0c4832671a810c7b2045a5fbefbf /clang/lib/Frontend/TestModuleFileExtension.cpp
parente66eabee0022af60347e83ef2c0d4b6dbfb7f0a5 (diff)
downloadllvm-a78a0f8d204393a0cce367b63395bad90311c1b8.zip
llvm-a78a0f8d204393a0cce367b63395bad90311c1b8.tar.gz
llvm-a78a0f8d204393a0cce367b63395bad90311c1b8.tar.bz2
[X86] Align f128 and i128 to 16 bytes when passing on x86-32 (#138092)
The i386 psABI specifies that `__float128` has 16 byte alignment and must be passed on the stack; however, LLVM currently stores it in a stack slot that has an offset of 4. Add a custom lowering to correct this alignment to 16-byte. i386 does not specify an `__int128`, but it seems reasonable to keep the same behavior as `__float128` so this is changed as well. There also isn't a good way to distinguish whether a set of four registers came from an integer or a float. The main test demonstrating this change is `store_perturbed` in `llvm/test/CodeGen/X86/i128-fp128-abi.ll`. Referenced ABI: https://gitlab.com/x86-psABIs/i386-ABI/-/wikis/uploads/14c05f1b1e156e0e46b61bfa7c1df1e2/intel386-psABI-2020-08-07.pdf Fixes: https://github.com/llvm/llvm-project/issues/77401
Diffstat (limited to 'clang/lib/Frontend/TestModuleFileExtension.cpp')
0 files changed, 0 insertions, 0 deletions