rust/compiler
Nicholas Nethercote 4f008e06c3 Clarify Layout interning.
`Layout` is another type that is sometimes interned, sometimes not, and
we always use references to refer to it so we can't take any advantage
of the uniqueness properties for hashing or equality checks.

This commit renames `Layout` as `LayoutS`, and then introduces a new
`Layout` that is a newtype around an `Interned<LayoutS>`. It also
interns more layouts than before. Previously layouts within layouts
(via the `variants` field) were never interned, but now they are. Hence
the lifetime on the new `Layout` type.

Unlike other interned types, these ones are in `rustc_target` instead of
`rustc_middle`. This reflects the existing structure of the code, which
does layout-specific stuff in `rustc_target` while `TyAndLayout` is
generic over the `Ty`, allowing the type-specific stuff to occur in
`rustc_middle`.

The commit also adds a `HashStable` impl for `Interned`, which was
needed. It hashes the contents, unlike the `Hash` impl which hashes the
pointer.
2022-03-07 13:41:47 +11:00
..
rustc
rustc_apfloat
rustc_arena
rustc_ast Ignore 2022-03-05 21:20:12 -05:00
rustc_ast_lowering Fallback to other where clause if preferred is missing 2022-03-05 13:15:00 -05:00
rustc_ast_passes Rollup merge of #94617 - pierwill:update-itertools, r=Mark-Simulacrum 2022-03-06 15:41:26 +01:00
rustc_ast_pretty Change syntax for TyAlias where clauses 2022-03-05 13:13:45 -05:00
rustc_attr Improve unexpected_cfgs lint when their is no value expected 2022-03-05 12:11:05 +01:00
rustc_borrowck Update itertools 2022-03-04 11:54:28 -06:00
rustc_builtin_macros Change syntax for TyAlias where clauses 2022-03-05 13:13:45 -05:00
rustc_codegen_cranelift Clarify Layout interning. 2022-03-07 13:41:47 +11:00
rustc_codegen_gcc Clarify Layout interning. 2022-03-07 13:41:47 +11:00
rustc_codegen_llvm Clarify Layout interning. 2022-03-07 13:41:47 +11:00
rustc_codegen_ssa Clarify Layout interning. 2022-03-07 13:41:47 +11:00
rustc_const_eval Auto merge of #94597 - nnethercote:ConstAllocation, r=fee1-dead 2022-03-06 22:37:54 +00:00
rustc_data_structures Clarify Layout interning. 2022-03-07 13:41:47 +11:00
rustc_driver Rollup merge of #93913 - bjorn3:remove_everybody_loops, r=jackh726 2022-03-04 02:06:38 +01:00
rustc_error_codes Rollup merge of #94555 - cuishuang:master, r=oli-obk 2022-03-03 20:01:48 +01:00
rustc_errors Auto merge of #87835 - xFrednet:rfc-2383-expect-attribute-with-ids, r=wesleywiser 2022-03-03 18:59:32 +00:00
rustc_expand Auto merge of #94096 - cjgillot:ensure-stability, r=lcnr 2022-03-04 05:49:14 +00:00
rustc_feature Auto merge of #94096 - cjgillot:ensure-stability, r=lcnr 2022-03-04 05:49:14 +00:00
rustc_fs_util
rustc_graphviz
rustc_hir compiler: fix some typos 2022-03-01 20:02:47 +08:00
rustc_hir_pretty resolve: Fix incorrect results of opt_def_kind query for some built-in macros 2022-02-24 22:54:36 +03:00
rustc_incremental all: fix some typos 2022-03-03 19:47:23 +08:00
rustc_index Fix test 2022-02-24 16:02:07 -05:00
rustc_infer Rollup merge of #94555 - cuishuang:master, r=oli-obk 2022-03-03 20:01:48 +01:00
rustc_interface Rollup merge of #94362 - Urgau:check-cfg-values, r=petrochenkov 2022-03-04 22:58:34 +01:00
rustc_lexer Improve scan_escape. 2022-02-24 17:01:01 +11:00
rustc_lint Clarify Layout interning. 2022-03-07 13:41:47 +11:00
rustc_lint_defs Change to lint 2022-03-05 13:15:00 -05:00
rustc_llvm Remove build_helper 2022-03-05 15:31:22 +01:00
rustc_log
rustc_macros Make Ord, PartialOrd opt-out in newtype_index 2022-03-03 11:52:40 -06:00
rustc_metadata Clarify Layout interning. 2022-03-07 13:41:47 +11:00
rustc_middle Clarify Layout interning. 2022-03-07 13:41:47 +11:00
rustc_mir_build rename ErrorReported -> ErrorGuaranteed 2022-03-02 09:45:25 -06:00
rustc_mir_dataflow Rollup merge of #94087 - tmiasko:rm-ignore-borrow-on-drop, r=jackh726 2022-02-26 07:52:42 +01:00
rustc_mir_transform Clarify Layout interning. 2022-03-07 13:41:47 +11:00
rustc_monomorphize Introduce ConstAllocation. 2022-03-07 08:25:50 +11:00
rustc_parse Auto merge of #90076 - jackh726:wherethewhere, r=nikomatsakis 2022-03-06 07:22:09 +00:00
rustc_parse_format
rustc_passes Auto merge of #93142 - estebank:missing-main, r=wesleywiser 2022-03-05 02:46:24 +00:00
rustc_plugin_impl
rustc_privacy Switch bootstrap cfgs 2022-02-25 08:00:52 -05:00
rustc_query_impl Auto merge of #94084 - Mark-Simulacrum:drop-sharded, r=cjgillot 2022-02-27 14:04:07 +00:00
rustc_query_system rename ErrorReported -> ErrorGuaranteed 2022-03-02 09:45:25 -06:00
rustc_resolve Rollup merge of #94595 - TaKO8Ki:fix-invalid-unresolved-imports-errors-for-asterisk-wildcard-syntax, r=estebank 2022-03-04 22:58:35 +01:00
rustc_save_analysis Switch bootstrap cfgs 2022-02-25 08:00:52 -05:00
rustc_serialize Delete Decoder::read_unit 2022-02-22 18:14:51 -05:00
rustc_session Update -Z unpretty error message 2022-03-06 12:45:37 +00:00
rustc_span Rollup merge of #94362 - Urgau:check-cfg-values, r=petrochenkov 2022-03-04 22:58:34 +01:00
rustc_symbol_mangling Introduce ConstAllocation. 2022-03-07 08:25:50 +11:00
rustc_target Clarify Layout interning. 2022-03-07 13:41:47 +11:00
rustc_trait_selection Rollup merge of #94057 - lcnr:simplify_type-uwu, r=nikomatsakis 2022-03-03 20:01:44 +01:00
rustc_traits chalk/db: use correct debrujin index when replacing opaque type. 2022-02-22 00:16:56 +01:00
rustc_ty_utils rename ErrorReported -> ErrorGuaranteed 2022-03-02 09:45:25 -06:00
rustc_type_ir
rustc_typeck Introduce ConstAllocation. 2022-03-07 08:25:50 +11:00