granite-rust/compiler
Aaron Hill 3291218f47
Improve caching during trait evaluation
Previously, we would 'forget' that we had `'static` regions in some
place during trait evaluation. This lead to us producing
`EvaluatedToOkModuloRegions` when we could have produced
`EvaluatedToOk`, causing us to perform unnecessary work.

This PR preserves `'static` regions when we canonicalize a predicate for
`evaluate_obligation`, and when we 'freshen' a predicate during trait
evaluation. Thie ensures that evaluating a predicate containing
`'static` regions can produce `EvaluatedToOk` (assuming that we
don't end up introducing any region dependencies during evaluation).

Building off of this improved caching, we use
`predicate_must_hold_considering_regions` during fulfillment of
projection predicates to see if we can skip performing additional work.
We already do this for trait predicates, but doing this for projection
predicates lead to mixed performance results without the above caching
improvements.
2021-07-21 17:54:05 -05:00
..
rustc use jemallocator in rustc/rustdoc 2021-04-04 14:10:26 -07:00
rustc_apfloat Use HTTPS links where possible 2021-06-23 16:26:46 -04:00
rustc_arena Remove (lots of) dead code 2021-03-27 22:16:33 -04:00
rustc_ast Remove special case for ExprKind::Paren in MutVisitor 2021-07-19 17:23:10 -05:00
rustc_ast_lowering Auto merge of - jackh726:issue-71883, r=estebank 2021-07-20 10:56:08 +00:00
rustc_ast_passes Auto merge of - workingjubilee:stable-rangefrom-pat, r=joshtriplett 2021-07-11 06:31:42 +00:00
rustc_ast_pretty Rework SESSION_GLOBALS API to prevent overwriting it 2021-07-08 16:16:28 +02:00
rustc_attr Enhance well-formedness checks for #[repr(...)] attributes 2021-07-09 22:03:48 +02:00
rustc_builtin_macros Rollup merge of - matthiaskrgr:clippy_collect, r=davidtwco 2021-07-21 15:52:45 +02:00
rustc_codegen_cranelift Rollup merge of - ricobbe:fix-raw-dylib-multiple-definitions, r=petrochenkov 2021-07-18 14:21:56 +09:00
rustc_codegen_llvm Auto merge of - tmiasko:personality, r=nagisa 2021-07-18 20:33:23 +00:00
rustc_codegen_ssa Auto merge of - michaelwoerister:debuginfo-names-dyn-trait-projection-bounds, r=wesleywiser 2021-07-19 21:25:43 +00:00
rustc_data_structures Some perf optimizations and logging 2021-07-17 16:09:17 -04:00
rustc_driver Auto merge of - in42:stack_trace, r=tmandry 2021-07-02 05:40:51 +00:00
rustc_error_codes Rollup merge of - midgleyc:add-E0757-long, r=GuillaumeGomez 2021-07-21 15:52:53 +02:00
rustc_errors Various diagnostics clean ups/tweaks 2021-07-19 08:43:35 -07:00
rustc_expand Only use assign_id! for ast nodes that support attributes 2021-07-17 23:03:58 -05:00
rustc_feature Improve impl_trait_in_bindings removed feature text 2021-07-19 09:20:15 -03:00
rustc_fs_util Optimize away a fs::metadata call. 2021-01-06 08:33:15 -08:00
rustc_graphviz Use HTTPS links where possible 2021-06-23 16:26:46 -04:00
rustc_hir Rollup merge of - fee1-dead:impl-const-impl-bounds, r=oli-obk 2021-07-21 15:52:47 +02:00
rustc_hir_pretty Rollup merge of - klensy:pp-loop, r=Mark-Simulacrum 2021-06-29 00:26:55 +09:00
rustc_incremental Move OnDiskCache to rustc_query_impl. 2021-07-18 11:14:07 +02:00
rustc_index Remove unused feature gates 2021-05-31 13:55:43 +02:00
rustc_infer Improve caching during trait evaluation 2021-07-21 17:54:05 -05:00
rustc_interface Remove deadlock virtual call. 2021-07-18 11:14:08 +02:00
rustc_lexer Rename 'bad prefix' to 'unknown prefix'. 2021-06-26 23:11:14 +08:00
rustc_lint Rename force-warns to force-warn 2021-07-21 15:41:10 +02:00
rustc_lint_defs Rename force-warns to force-warn 2021-07-21 15:41:10 +02:00
rustc_llvm Upgrade cc crate to 1.0.69 2021-07-13 17:58:50 +09:00
rustc_macros Move OnDiskCache to rustc_query_impl. 2021-07-18 11:14:07 +02:00
rustc_metadata Auto merge of - cjgillot:modc, r=estebank 2021-07-18 10:42:23 +00:00
rustc_middle Rename force-warns to force-warn 2021-07-21 15:41:10 +02:00
rustc_mir Rollup merge of - oli-obk:nll_suggestion_span, r=estebank 2021-07-21 15:52:51 +02:00
rustc_mir_build Revert "structural_match: non-structural-match ty closures" 2021-07-18 09:30:10 -03:00
rustc_parse Auto merge of - JohnTitor:rollup-t9rmwpo, r=JohnTitor 2021-07-18 08:15:17 +00:00
rustc_parse_format Rework SESSION_GLOBALS API to prevent overwriting it 2021-07-08 16:16:28 +02:00
rustc_passes Warn about useless assignments of variables/fields to themselves 2021-07-14 16:29:35 +02:00
rustc_plugin_impl Use () for plugin_registrar_fn. 2021-05-12 13:58:43 +02:00
rustc_privacy Make resolutions a query. 2021-07-06 19:22:27 +02:00
rustc_query_impl Remove deadlock virtual call. 2021-07-18 11:14:08 +02:00
rustc_query_system Auto merge of - cjgillot:lessfn, r=bjorn3 2021-06-15 14:52:58 +00:00
rustc_resolve Compute a better lint_node_id during expansion 2021-07-17 23:03:56 -05:00
rustc_save_analysis rustc_span: Revert addition of proc_macro field to ExpnKind::Macro 2021-07-10 23:03:35 +03:00
rustc_serialize Emit warnings for unused fields in custom targets. 2021-06-17 21:48:02 +02:00
rustc_session Rename force-warns to force-warn 2021-07-21 15:41:10 +02:00
rustc_span Auto merge of - estebank:cleanup, r=oli-obk 2021-07-19 18:44:27 +00:00
rustc_symbol_mangling Revert "Revert "Merge CrateDisambiguator into StableCrateId"" 2021-07-06 11:28:04 +02:00
rustc_target Auto merge of - Andy-Python-Programmer:code_model_uefi_patch, r=petrochenkov 2021-07-17 10:15:33 +00:00
rustc_trait_selection Improve caching during trait evaluation 2021-07-21 17:54:05 -05:00
rustc_traits Add initial implementation of HIR-based WF checking for diagnostics 2021-07-16 16:29:02 -05:00
rustc_ty_utils Add impl_constness query 2021-07-10 20:54:49 +08:00
rustc_type_ir Remove unused feature gates 2021-05-31 13:55:43 +02:00
rustc_typeck Rollup merge of - fee1-dead:impl-const-impl-bounds, r=oli-obk 2021-07-21 15:52:47 +02:00