Fix bool calling convention for aarch64, etc. - #159317
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
fda6d0a to
0e89baa
Compare
bool calling convention for aarch64bool calling convention for aarch64, etc.
|
r? @mejrs rustbot has assigned @mejrs. Use Why was this reviewer chosen?The reviewer was selected based on:
|
We still attach `noundef` using the code that immediately follows. It will be fine, trust.
0e89baa to
d32d914
Compare
|
Might as well look at the baseline regression-or-not that we might be facing. @bors try @rust-timer queue |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Fix `bool` calling convention for aarch64, etc.
This comment has been minimized.
This comment has been minimized.
What is this?This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.Comparing dfbea5b (parent) -> ad0c9dc (this PR) Test differencesShow 2 test diffsStage 1
Stage 2
Job group index
Test dashboardRun cargo run --manifest-path src/ci/citool/Cargo.toml -- \
test-dashboard ad0c9dce27a22416b65946bc0010edaf22ac6c83 --output-dir test-dashboardAnd then open Job duration changes
How to interpret the job duration changes?Job durations can vary a lot, based on the actual runner instance |
|
Finished benchmarking commit (ad0c9dc): comparison URL. Overall result: ❌ regressions - no action needed@rustbot label: -perf-regression Instruction countOur most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.
Max RSS (memory usage)Results (secondary 2.0%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (primary 4.1%, secondary -2.6%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeThis perf run didn't have relevant results for this metric. Bootstrap: 486.74s -> 495.576s (1.82%) |
View all comments
We have been making a broad assumption about the way
boolshould be handled that may be correct for Rust calling Rust but is wildly incorrect for cross-language FFI calls. The ABI ofboolis generally poorly-specified in any C psABI, and often deliberately allows for deviation after the first 8 bits.This has surfaced as a bug that can corrupt Rust programs on aarch64, but it is a potential latent bug when it comes to every ABI. The simplest solution is to simply stop applying the special case when generating
bool's ArgAttributes. This yields control to the later ABI implementations, which may then sign or zero extend thebool(or not) according to their needs.Fixes #159244