rust/compiler
Dylan MacKenzie c03eba2d08 Add FIXME for faster cached block transfer functions
I've tried a few ways of implementing this, but each fell short.

Adding an auxiliary `_Idx` associated type to `Analysis` that defaults
to `!` but is overridden in the blanket impl of `Analysis` for `A:
GenKillAnalysis` to `A::Idx` seems promising, but the trait solver is
unable to prove equivalence between `A::Idx` and `A::_Idx` within the
overridden version of `into_engine`. Without full-featured
specialization, removing `into_engine` or splitting it into a different
trait would have a significant ergonomic penalty.

Alternatively, we could erase the index type and store a
`GenKillSet<u32>` as well as a function pointer for transmuting between
`&mut A::Domain` and `&mut BitSet<u32>` in the hopes that LLVM can
devirtualize a simple function pointer better than the boxed closure.
However, this is brittle, requires `unsafe` code, and doesn't work for
index types that aren't the same size as a `u32` (e.g. `usize`) since
`GenKillSet` stores a `HybridBitSet`, which may be a `Vec<I>`. Perhaps
safe transmute could help here?
2020-08-30 11:15:25 -07:00
..
rustc mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_apfloat mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_arena mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_ast mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_ast_lowering mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_ast_passes mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_ast_pretty mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_attr mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_builtin_macros mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_codegen_llvm mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_codegen_ssa mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_data_structures mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_driver mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_error_codes mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_errors mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_expand mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_feature mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_fs_util mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_graphviz mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_hir mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_hir_pretty mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_incremental mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_index Improve BitSet APIs 2020-08-30 11:13:18 -07:00
rustc_infer mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_interface mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_lexer mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_lint mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_macros mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_metadata mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_middle mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_mir Add FIXME for faster cached block transfer functions 2020-08-30 11:15:25 -07:00
rustc_mir_build mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_parse mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_parse_format mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_passes mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_plugin_impl mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_privacy mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_query_system mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_resolve mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_save_analysis mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_serialize mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_session mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_span mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_symbol_mangling mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_target mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_trait_selection mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_traits mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_ty mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_typeck mv compiler to compiler/ 2020-08-30 18:45:07 +03:00