diff options
| author | bors <bors@rust-lang.org> | 2018-07-10 03:08:47 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-07-10 03:08:47 +0000 |
| commit | b3e7d70ce7730a929fd3d5094e8ad2eb71c3a399 (patch) | |
| tree | 3b1aa2db6d7f2e2ea069bf23cb12f8b801a2ee19 /src/libstd/sys/unix/stack_overflow.rs | |
| parent | 295858eba7543b31984184df8a20d874446a6a05 (diff) | |
| parent | 557736befc84fb72066128a8c42efe6e4e63a3b1 (diff) | |
| download | rust-b3e7d70ce7730a929fd3d5094e8ad2eb71c3a399.tar.gz rust-b3e7d70ce7730a929fd3d5094e8ad2eb71c3a399.zip | |
Auto merge of #51583 - cuviper:packed_pair-bool, r=Mark-Simulacrum
Store scalar pair bools as i8 in memory
We represent `bool` as `i1` in a `ScalarPair`, unlike other aggregates,
to optimize IR for checked operators and the like. With this patch, we
still do so when the pair is an immediate value, but we use the `i8`
memory type when the value is loaded or stored as an LLVM aggregate.
So `(bool, bool)` looks like an `{ i1, i1 }` immediate, but `{ i8, i8 }`
in memory. When a pair is a direct function argument, `PassMode::Pair`,
it is still passed using the immediate `i1` type, but as a return value
it will use the `i8` memory type. Also, `bool`-like` enum tags will now
use scalar pairs when possible, where they were previously excluded due
to optimization issues.
Fixes #51516.
Closes #51566.
r? @eddyb
cc @nox
Diffstat (limited to 'src/libstd/sys/unix/stack_overflow.rs')
0 files changed, 0 insertions, 0 deletions
