rust/compiler
Matthias Krüger dbdfa7914c
Rollup merge of #134980 - lqd:polonius-next-episode-7, r=jackh726
Location-sensitive polonius prototype: endgame

This PR sets up the naive location-sensitive analysis end-to-end, and replaces the location-insensitive analysis. It's roughly all the in-progress work I wanted to land for the prototype, modulo cleanups I still want to do after the holidays, or the polonius debugger, and so on.

Here, we traverse the localized constraint graph, have to deal with kills and time-traveling (👌), and record that as loan liveness for the existing scope and active loans computations.

Then the near future looks like this, especially if the 2025h1 project goal is accepted:
- gradually bringing it up to completion
- analyzing and fixing the few remaining test failures
- going over the *numerous* fixmes in this prototype (one of which is similar to a hang on one test's millions and millions of constraints)
- trying to see how to lower the impact of the lack of NLL liveness optimization on diagnostics, and their categorization of local variables and temporaries (the vast majority of blessed expectations differences), as well as the couple ICEs trying to find an NLL constraint to blame for errors.
- dealing with the theoretical weakness around kills, conflating reachability for the two TCS, etc that is described ad nauseam in the code.
- switching the compare mode to the in-tree implementation, and blessing the diagnostics
- apart from the hang, it's not catastrophically slower on our test suite, so then we can try to enable it on CI
- checking crater, maybe trying to make it faster :3, etc.

I've tried to gradually introduce this PR's work over 4 commits, because it's kind of subtle/annoying, and Niko/I are not completely convinced yet. That one comment explaining the situation is maybe 30% of the PR 😓. Who knew that spacetime reachability and time-traveling could be mind bending.

I kinda found this late and the impact on this part of the computation was a bit unexpected to us. A bit more care/thought will be needed here. I've described my plan in the comments though. In any case, I believe we have the current implementation is a conservative approximation that shouldn't result in unsoundness but false positives at worst. So it feels fine for now.

r? ``@jackh726``

---

Fixes #127628 -- which was a assertion triggered for a difference in loan computation between NLLs and the location-insensitive analysis. That doesn't exist anymore so I've removed this crash test.
2025-01-17 09:11:17 +01:00
..
rustc switch jemalloc-sys back to tikv-jemalloc-sys, and update to 0.6.0 2024-12-03 08:56:33 +00:00
rustc_abi Auto merge of #135047 - Flakebi:amdgpu-kernel-cc, r=workingjubilee 2025-01-17 04:36:09 +00:00
rustc_arena Add inherent versions of MaybeUninit methods for slices 2025-01-11 23:57:00 -05:00
rustc_ast allowed_through_unstable_modules: support showing a deprecation message when the unstable module name is used 2025-01-15 09:41:33 +01:00
rustc_ast_ir Add sugar for &pin (const|mut) types 2024-10-07 11:15:04 -07:00
rustc_ast_lowering Treat safe target_feature functions as unsafe by default 2025-01-15 08:58:17 +00:00
rustc_ast_passes update cfg(bootstrap) 2025-01-08 21:26:39 +01:00
rustc_ast_pretty Rename PatKind::Lit to Expr 2025-01-08 07:34:59 +00:00
rustc_attr_data_structures allowed_through_unstable_modules: support showing a deprecation message when the unstable module name is used 2025-01-15 09:41:33 +01:00
rustc_attr_parsing allowed_through_unstable_modules: support showing a deprecation message when the unstable module name is used 2025-01-15 09:41:33 +01:00
rustc_baked_icu_data Delete the cfg(not(parallel)) serial compiler 2024-11-12 13:38:58 +00:00
rustc_borrowck Rollup merge of #134980 - lqd:polonius-next-episode-7, r=jackh726 2025-01-17 09:11:17 +01:00
rustc_builtin_macros Rollup merge of #134877 - DavisRayM:129966-format-string-help-message, r=estebank 2025-01-01 16:35:30 +11:00
rustc_codegen_cranelift Auto merge of #135047 - Flakebi:amdgpu-kernel-cc, r=workingjubilee 2025-01-17 04:36:09 +00:00
rustc_codegen_gcc Rollup merge of #134338 - tgross35:overflowing-c-safe-ret, r=bjorn3,antoyo 2025-01-15 04:08:12 -05:00
rustc_codegen_llvm Auto merge of #135047 - Flakebi:amdgpu-kernel-cc, r=workingjubilee 2025-01-17 04:36:09 +00:00
rustc_codegen_ssa Treat safe target_feature functions as unsafe by default 2025-01-15 08:58:17 +00:00
rustc_const_eval Methods of const traits are const 2025-01-15 15:57:06 +00:00
rustc_data_structures Auto merge of #135592 - matthiaskrgr:rollup-4t69l7i, r=matthiaskrgr 2025-01-16 21:31:19 +00:00
rustc_driver
rustc_driver_impl add deprecated and do nothing flag to options table 2025-01-06 15:38:02 +03:00
rustc_error_codes Implement use associated items of traits 2025-01-16 16:34:05 +08:00
rustc_error_messages Convert some Into impls into From impls 2024-12-31 01:56:33 +00:00
rustc_errors Auto merge of #135402 - matthiaskrgr:rollup-cz7hs13, r=matthiaskrgr 2025-01-12 14:43:10 +00:00
rustc_expand Rollup merge of #135247 - tgross35:stdlib-sym-list, r=oli-obk 2025-01-09 09:05:09 +01:00
rustc_feature Auto merge of #135047 - Flakebi:amdgpu-kernel-cc, r=workingjubilee 2025-01-17 04:36:09 +00:00
rustc_fluent_macro use tracked_path in rustc_fluent_macro 2024-10-19 22:32:38 +08:00
rustc_fs_util Couple of changes to make it easier to compile rustc for wasm 2024-09-26 19:51:14 +00:00
rustc_graphviz Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
rustc_hir Treat safe target_feature functions as unsafe by default 2025-01-15 08:58:17 +00:00
rustc_hir_analysis Auto merge of #134504 - oli-obk:push-rltsvnyttwll, r=compiler-errors 2025-01-16 18:46:28 +00:00
rustc_hir_pretty Treat safe target_feature functions as unsafe by default 2025-01-15 08:58:17 +00:00
rustc_hir_typeck Coerce safe-to-call target_feature functions to fn pointers. 2025-01-16 10:54:33 +01:00
rustc_incremental turn hir::ItemKind::Fn into a named-field variant 2025-01-04 11:35:31 +01:00
rustc_index Add DenseBitSet::union_not 2025-01-14 23:49:10 +11:00
rustc_index_macros update rustc_index_macros feature handling 2024-12-19 20:32:12 +03:00
rustc_infer rm unnecessary OpaqueTypeDecl wrapper 2025-01-13 14:33:18 +01:00
rustc_interface Rollup merge of #134030 - folkertdev:min-fn-align, r=workingjubilee 2025-01-11 18:13:45 +01:00
rustc_lexer Add test to check unicode identifier version 2024-12-09 06:23:59 -08:00
rustc_lint Rollup merge of #135249 - s-cerevisiae:fix-overflowing-literals-help, r=chenyukang 2025-01-16 17:00:46 +01:00
rustc_lint_defs Rollup merge of #132397 - m-ou-se:warn-missing-abi, r=Nadrieril 2025-01-15 04:08:10 -05:00
rustc_llvm llvm: Ignore error value that is always false 2025-01-07 01:02:22 +00:00
rustc_log Avoid naming variables str 2025-01-07 14:30:02 +02:00
rustc_macros Avoid naming variables str 2025-01-07 14:30:02 +02:00
rustc_metadata Mark dependencies of the standard library as private by default 2025-01-14 08:51:19 +00:00
rustc_middle Auto merge of #135047 - Flakebi:amdgpu-kernel-cc, r=workingjubilee 2025-01-17 04:36:09 +00:00
rustc_mir_build Coerce safe-to-call target_feature functions to fn pointers. 2025-01-16 10:54:33 +01:00
rustc_mir_dataflow rename BitSet to DenseBitSet 2025-01-11 11:34:01 +00:00
rustc_mir_transform coverage: Make yank_to_spantree_root iterative instead of recursive 2025-01-16 22:07:18 +11:00
rustc_monomorphize Make sure we actually use the right trivial lifetime substs when eagerly monomorphizing drop for structs 2025-01-15 04:20:25 +00:00
rustc_next_trait_solver Prefer lower TraitUpcasting candidates 2025-01-14 17:59:54 +00:00
rustc_parse Remove allocations from case-insensitive comparison to keywords 2025-01-11 12:39:44 -05:00
rustc_parse_format add suggestion for wrongly ordered format parameters 2024-12-30 06:14:26 -08:00
rustc_passes Rollup merge of #135003 - RalfJung:deprecate-allowed-through-unstable, r=davidtwco 2025-01-15 16:30:11 +01:00
rustc_pattern_analysis rename BitSet to DenseBitSet 2025-01-11 11:34:01 +00:00
rustc_privacy turn hir::ItemKind::Fn into a named-field variant 2025-01-04 11:35:31 +01:00
rustc_query_impl don't return an Option from try_find_dep_kind 2025-01-07 21:57:00 +01:00
rustc_query_system remove code duplication when hashing query result and interning node 2025-01-13 20:25:46 +01:00
rustc_resolve Rollup merge of #134754 - frank-king:feature/import_trait_associated_functions, r=oli-obk 2025-01-16 18:46:08 +01:00
rustc_sanitizers Eliminate an unnecessary Symbol::to_string; use as_str 2025-01-07 14:24:47 +02:00
rustc_serialize Fix explicit_iter_loop in rustc_serialize 2024-10-16 15:44:16 +02:00
rustc_session Update docs for -Clink-dead-code to discourage its use 2025-01-16 15:43:29 +11:00
rustc_smir Add gpu-kernel calling convention 2025-01-16 00:26:55 +01:00
rustc_span Auto merge of #135047 - Flakebi:amdgpu-kernel-cc, r=workingjubilee 2025-01-17 04:36:09 +00:00
rustc_symbol_mangling Fix legacy symbol mangling of closures 2025-01-14 16:33:03 +00:00
rustc_target Auto merge of #135047 - Flakebi:amdgpu-kernel-cc, r=workingjubilee 2025-01-17 04:36:09 +00:00
rustc_trait_selection Rollup merge of #135498 - compiler-errors:dyn-upcasting-completeness, r=lcnr 2025-01-15 16:30:17 +01:00
rustc_traits Delay a bug when encountering an impl with unconstrained generics in codegen_select 2024-11-23 05:27:45 +00:00
rustc_transmute add comment explaining why ty_and_layout_field is not used 2024-12-18 11:01:54 +01:00
rustc_ty_utils Auto merge of #135047 - Flakebi:amdgpu-kernel-cc, r=workingjubilee 2025-01-17 04:36:09 +00:00
rustc_type_ir Rollup merge of #135498 - compiler-errors:dyn-upcasting-completeness, r=lcnr 2025-01-15 16:30:17 +01:00
rustc_type_ir_macros do not relate Abi and Safety 2024-10-22 23:13:04 +02:00
stable_mir Add gpu-kernel calling convention 2025-01-16 00:26:55 +01:00