[PATCH] D86310: [X86] Align i128 to 16 bytes in x86 datalayouts

Trevor Gross via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Aug 17 14:56:34 PDT 2023


tmgross added a comment.

In D86310#4596730 <https://reviews.llvm.org/D86310#4596730>, @hvdijk wrote:

> My understanding is that the code clang generates for `__int128` will still allow it to be passed half-in-register, half-in-memory, exactly what D158169 <https://reviews.llvm.org/D158169> sets out to fix, because D158169 <https://reviews.llvm.org/D158169> only fixes it for LLVM's `i128` which clang bypasses.

I think that D158169 <https://reviews.llvm.org/D158169> seems to have fixed clang as well; after applying both patches, clang gcc and rustc all seem to agree. On the readme for https://github.com/tgross35/quick-abi-check look at the tests `i128-caller-gcc-callee-clang-old` (args don't align) `i128-caller-gcc-callee-clang-new` (args **are** the same) and `i128-caller-gcc-callee-rustc` (args are the same). Also the full ABI checker seems to say everything is in order (https://github.com/rust-lang/rust/pull/113880#issuecomment-1683021483 not sure why it says "4 failed" at the end, but I think it's a bug since no tests actually show failed).

Does this all seem correct? As far as I can tell it seems like with both patchs these issues should be resolved.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D86310/new/

https://reviews.llvm.org/D86310



More information about the cfe-commits mailing list