diff options
| author | Trevor Gross <tmgross@umich.edu> | 2025-05-23 17:26:39 +0000 |
|---|---|---|
| committer | Trevor Gross <t.gross35@gmail.com> | 2025-05-28 02:58:42 -0400 |
| commit | 4c264c96ae30e45c503fbb24e452ea948c5229af (patch) | |
| tree | 8baaa8ca15c4d9b5ca8bc8e14797cfab6d2860d8 /tests/codegen/patchable-function-entry | |
| parent | db21837095f18a76d1fecb7d55547688a6b19647 (diff) | |
| download | rust-4c264c96ae30e45c503fbb24e452ea948c5229af.tar.gz rust-4c264c96ae30e45c503fbb24e452ea948c5229af.zip | |
Update `CmpResult` to use a pointer-sized return type
As seen at [1], LLVM uses `long long` on LLP64 (to get a 64-bit integer matching pointer size) and `long` on everything else, with exceptions for AArch64 and AVR. Our current logic always uses an `i32`. This happens to work because LLVM uses 32-bit instructions to check the output on x86-64, but the GCC checks the full 64-bit register so garbage in the upper half leads to incorrect results. Update our return type to be `isize`, with exceptions for AArch64 and AVR. Fixes: https://github.com/rust-lang/compiler-builtins/issues/919 [1]: https://github.com/llvm/llvm-project/blob/0cf3c437c18ed27d9663d87804a9a15ff6874af2/compiler-rt/lib/builtins/fp_compare_impl.inc#L11-L27
Diffstat (limited to 'tests/codegen/patchable-function-entry')
0 files changed, 0 insertions, 0 deletions
