rust/compiler
bors 9da3e81785 Auto merge of #115870 - RalfJung:const-value-slice, r=oli-obk
adjust ConstValue::Slice to work for arbitrary slice types

valtrees have already been assuming that this works; this PR makes it a reality. Also further restrict `ConstValue::Slice` to what it is actually used for; this even shrinks `ConstValue` from 32 to 24 bytes which is a nice win. :)

The alternative to this approach is to make `ConstValue::Slice` work really only for `&str`/`&[u8]` literals, and never return it in `op_to_const`. That would make `op_to_const` very clean. We could then even remove the `meta` field; the length would always be `data.inner().len()`. We could *almost* just use a `Symbol` instead of a `ConstAllocation`, but we have to support byte strings and there doesn't seem to be an interned representation of them (or rather, `ConstAllocation` *is* their interned representation). In this world, valtrees of slice reference types would then become noticeably more expensive to turn into a `ConstValue` -- but does that matter? Specifically for `&str`/`&[u8]` we could still use the optimized representation if we wanted.

If byte strings were already interned somewhere I'd gravitate towards the alternative, but the way things stand, we need a `ConstAllocation` case anyway to support byte strings, and then we might as well support arbitrary slices. (Or we say that byte strings don't get an optimized representation at all. Such a performance cliff between `str` and byte strings is probably unexpected, though due to the lack of interning for byte strings I think there might already be a performance cliff there.)
2023-09-20 18:06:48 +00:00
..
rustc
rustc_abi turns out Layout has some more things to worry about -- move ABI comparison into helper function 2023-09-08 09:14:07 +02:00
rustc_arena Bump cfg(bootstrap) 2023-08-23 20:05:14 -04:00
rustc_ast Auto merge of #114452 - weiznich:feature/diagnostic_on_unimplemented, r=compiler-errors 2023-09-17 10:00:15 +00:00
rustc_ast_lowering Auto merge of #113955 - cjgillot:name-apit, r=WaffleLapkin 2023-09-19 21:23:39 +00:00
rustc_ast_passes Move let expression checking to parsing 2023-09-11 15:51:18 +00:00
rustc_ast_pretty Move let expression checking to parsing 2023-09-11 15:51:18 +00:00
rustc_attr Auto merge of #114201 - Centri3:explicit-repr-rust, r=WaffleLapkin 2023-08-25 00:02:54 +00:00
rustc_baked_icu_data
rustc_borrowck Remove RegionHighlightMode::tcx. 2023-09-18 09:37:09 +10:00
rustc_builtin_macros Rollup merge of #115891 - RalfJung:structural-trait-derive, r=nnethercote 2023-09-18 18:27:20 +02:00
rustc_codegen_cranelift adjust constValue::Slice to work for arbitrary slice types 2023-09-19 20:17:43 +02:00
rustc_codegen_gcc fix gcc, cranelift build 2023-09-15 10:43:44 +02:00
rustc_codegen_llvm cannot have Direct for unsized types 2023-09-15 10:45:37 +02:00
rustc_codegen_ssa adjust constValue::Slice to work for arbitrary slice types 2023-09-19 20:17:43 +02:00
rustc_const_eval adjust constValue::Slice to work for arbitrary slice types 2023-09-19 20:17:43 +02:00
rustc_data_structures use pretty_print_const_value from MIR constant 'extra' printing 2023-09-19 11:06:32 +02:00
rustc_driver
rustc_driver_impl Auto merge of #115627 - compiler-errors:icedump-no-std, r=m-ou-se 2023-09-19 16:56:25 +00:00
rustc_error_codes Auto merge of #115334 - RalfJung:transparent-aligned-zst, r=compiler-errors 2023-09-17 15:20:44 +00:00
rustc_error_messages Bump cfg(bootstrap) 2023-08-23 20:05:14 -04:00
rustc_errors implement -Z ignore-directory-in-diagnostics-source-blocks 2023-09-15 16:22:50 +02:00
rustc_expand Enable incremental-relative-spans by default. 2023-09-07 20:21:13 +00:00
rustc_feature Auto merge of #114452 - weiznich:feature/diagnostic_on_unimplemented, r=compiler-errors 2023-09-17 10:00:15 +00:00
rustc_fluent_macro
rustc_fs_util
rustc_graphviz
rustc_hir Auto merge of #113955 - cjgillot:name-apit, r=WaffleLapkin 2023-09-19 21:23:39 +00:00
rustc_hir_analysis Rollup merge of #115566 - zirconium-n:issue-107250-clean-up-unused-to-predicate, r=oli-obk 2023-09-20 17:33:16 +02:00
rustc_hir_pretty Auto merge of #114545 - fee1-dead-contrib:lower-impl-effect, r=oli-obk 2023-08-08 19:23:41 +00:00
rustc_hir_typeck Auto merge of #115289 - compiler-errors:adjust-comments, r=estebank 2023-09-19 03:52:48 +00:00
rustc_incremental Avoid a source_span query when encoding Spans into query results 2023-09-08 02:08:52 +02:00
rustc_index Auto merge of #115094 - Mark-Simulacrum:bootstrap-update, r=ozkanonur 2023-08-24 11:10:52 +00:00
rustc_infer Auto merge of #115748 - RalfJung:post-mono, r=oli-obk 2023-09-18 19:41:21 +00:00
rustc_interface Auto merge of #114750 - Enselic:metadata-dep-info, r=compiler-errors 2023-09-17 11:45:53 +00:00
rustc_lexer
rustc_lint Auto merge of #114494 - est31:extend_useless_ptr_null_checks, r=jackh726 2023-09-16 03:40:20 +00:00
rustc_lint_defs Auto merge of #114452 - weiznich:feature/diagnostic_on_unimplemented, r=compiler-errors 2023-09-17 10:00:15 +00:00
rustc_llvm llvm-wrapper: adapt for LLVM API changes 2023-09-15 14:31:43 +00:00
rustc_log
rustc_macros Bump cfg(bootstrap) 2023-08-23 20:05:14 -04:00
rustc_metadata Auto merge of #114750 - Enselic:metadata-dep-info, r=compiler-errors 2023-09-17 11:45:53 +00:00
rustc_middle Auto merge of #115870 - RalfJung:const-value-slice, r=oli-obk 2023-09-20 18:06:48 +00:00
rustc_mir_build adjust constValue::Slice to work for arbitrary slice types 2023-09-19 20:17:43 +02:00
rustc_mir_dataflow Support non-scalar constants. 2023-09-11 16:29:41 +00:00
rustc_mir_transform coverage: Remove vestigial counter/expression debug labels 2023-09-20 17:24:10 +10:00
rustc_monomorphize adjust constValue::Slice to work for arbitrary slice types 2023-09-19 20:17:43 +02:00
rustc_parse Auto merge of #115677 - matthewjasper:let-expr-recovery, r=b-naber 2023-09-14 19:56:55 +00:00
rustc_parse_format Rollup merge of #115611 - lukas-code:format!("{r#ident}"), r=compiler-errors 2023-09-17 11:23:25 +00:00
rustc_passes Auto merge of #114452 - weiznich:feature/diagnostic_on_unimplemented, r=compiler-errors 2023-09-17 10:00:15 +00:00
rustc_plugin_impl
rustc_privacy Rollup merge of #115727 - fee1-dead-contrib:effect-fallback, r=oli-obk 2023-09-11 17:03:31 +02:00
rustc_query_impl Remove verbose_generic_activity_with_arg 2023-09-10 17:47:16 +02:00
rustc_query_system Use UnhashMap for the index 2023-09-12 08:59:37 +02:00
rustc_resolve fix confusing let chain indentation in rustc_resolve 2023-09-19 21:21:01 +01:00
rustc_serialize Use a specialized varint + bitpacking scheme for DepGraph encoding 2023-09-04 12:16:50 -04:00
rustc_session coverage: Remove debug code from the instrumentor 2023-09-20 17:24:10 +10:00
rustc_smir adjust constValue::Slice to work for arbitrary slice types 2023-09-19 20:17:43 +02:00
rustc_span Auto merge of #110800 - GuillaumeGomez:custom_code_classes_in_docs, r=t-rustdoc 2023-09-16 13:10:11 +00:00
rustc_symbol_mangling Auto merge of #115817 - fee1-dead-contrib:fix-codegen, r=oli-obk 2023-09-14 13:42:30 +00:00
rustc_target rustc_target/riscv: Fix passing of transparent unions with only one non-ZST member 2023-09-19 12:06:33 +02:00
rustc_trait_selection remove impl<'tcx> ToPredicate<'tcx, Clause<'tcx>> for PolyProjectionPredicate<'tcx> 2023-09-20 04:03:02 +08:00
rustc_traits Detect cycle errors hidden by opaques during monomorphization 2023-09-13 17:35:44 +00:00
rustc_transmute make the eval() functions on our const types return the resulting value 2023-09-13 07:29:34 +02:00
rustc_ty_utils remove impl<'tcx> ToPredicate<'tcx, Clause<'tcx>> for PolyProjectionPredicate<'tcx> 2023-09-20 04:03:02 +08:00
rustc_type_ir make more pretty 2023-09-18 17:29:13 +01:00