diff options
| author | Michael Benfield <mbenfield@google.com> | 2022-03-08 19:07:01 +0000 |
|---|---|---|
| committer | Michael Benfield <mbenfield@google.com> | 2022-09-07 20:12:45 +0000 |
| commit | d7a750b50436fbd228b176f6438566625e235990 (patch) | |
| tree | 4fc710101a6ad49617739201ebb72660e54b2e43 /compiler/rustc_data_structures | |
| parent | 1a08b96a0bb7c170130144214787b4a46aa5eb17 (diff) | |
| download | rust-d7a750b50436fbd228b176f6438566625e235990.tar.gz rust-d7a750b50436fbd228b176f6438566625e235990.zip | |
Use niche-filling optimization even when multiple variants have data.
Fixes #46213
Diffstat (limited to 'compiler/rustc_data_structures')
| -rw-r--r-- | compiler/rustc_data_structures/src/obligation_forest/mod.rs | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/compiler/rustc_data_structures/src/obligation_forest/mod.rs b/compiler/rustc_data_structures/src/obligation_forest/mod.rs index 07a96dd7dbb..e351b650a16 100644 --- a/compiler/rustc_data_structures/src/obligation_forest/mod.rs +++ b/compiler/rustc_data_structures/src/obligation_forest/mod.rs @@ -117,6 +117,10 @@ pub trait ObligationProcessor { } /// The result type used by `process_obligation`. +// `repr(C)` to inhibit the niche filling optimization. Otherwise, the `match` appearing +// in `process_obligations` is significantly slower, which can substantially affect +// benchmarks like `rustc-perf`'s inflate and keccak. +#[repr(C)] #[derive(Debug)] pub enum ProcessResult<O, E> { Unchanged, |
