rust/compiler/rustc_mir_transform/src
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
..
coverage 7 - Make more use of let_chains 2022-03-01 07:43:12 -03:00
inline Adopt let else in more places 2022-02-19 17:27:43 +01:00
abort_unwinding_calls.rs Adopt let else in more places 2022-02-19 17:27:43 +01:00
add_call_guards.rs Move rustc_mir::transform to rustc_mir_transform. 2021-09-07 00:43:14 +02:00
add_moves_for_packed_drops.rs Adopt let else in more places 2022-02-19 17:27:43 +01:00
add_retag.rs Remove in_band_lifetimes from rustc_mir_transform 2021-12-07 21:04:40 -08:00
check_const_item_mutation.rs rustc_errors: let DiagnosticBuilder::emit return a "guarantee of emission". 2022-02-23 06:38:52 +00:00
check_packed_ref.rs give more help in the unaligned_references lint 2021-12-09 16:48:51 -05:00
check_unsafety.rs Improve unused_unsafe lint 2022-02-20 21:00:12 +01:00
cleanup_post_borrowck.rs Move rustc_mir::transform to rustc_mir_transform. 2021-09-07 00:43:14 +02:00
const_debuginfo.rs 7 - Make more use of let_chains 2022-03-01 07:43:12 -03:00
const_goto.rs Remove in_band_lifetimes from rustc_mir_transform 2021-12-07 21:04:40 -08:00
const_prop.rs Introduce ConstAllocation. 2022-03-07 08:25:50 +11:00
deaggregator.rs Adopt let else in more places 2022-02-19 17:27:43 +01:00
deduplicate_blocks.rs Remove in_band_lifetimes from rustc_mir_transform 2021-12-07 21:04:40 -08:00
dest_prop.rs 7 - Make more use of let_chains 2022-03-01 07:43:12 -03:00
dump_mir.rs Inline on_mir_pass and add inline to dump_mir 2021-10-14 15:26:59 -05:00
early_otherwise_branch.rs Overhaul TyS and Ty. 2022-02-15 16:03:24 +11:00
elaborate_drops.rs Adopt let else in more places 2022-02-19 17:27:43 +01:00
function_item_references.rs remove TyS::same_type 2022-02-01 11:21:26 +01:00
generator.rs Rollup merge of #94087 - tmiasko:rm-ignore-borrow-on-drop, r=jackh726 2022-02-26 07:52:42 +01:00
inline.rs 7 - Make more use of let_chains 2022-03-01 07:43:12 -03:00
instcombine.rs 7 - Make more use of let_chains 2022-03-01 07:43:12 -03:00
lib.rs 7 - Make more use of let_chains 2022-03-01 07:43:12 -03:00
lower_intrinsics.rs Adopt let else in more places 2022-02-19 17:27:43 +01:00
lower_slice_len.rs Adopt let else in more places 2022-02-19 17:27:43 +01:00
marker.rs Add pass for simple phase change 2021-12-02 17:31:38 -08:00
match_branches.rs Update passes with new interface 2021-12-02 17:31:38 -08:00
multiple_return_terminators.rs Update passes with new interface 2021-12-02 17:31:38 -08:00
normalize_array_len.rs Rollup merge of #94011 - est31:let_else, r=lcnr 2022-02-17 23:00:59 +01:00
nrvo.rs Adopt let else in more places 2022-02-19 17:27:43 +01:00
pass_manager.rs Remove in_band_lifetimes from rustc_mir_transform 2021-12-07 21:04:40 -08:00
remove_false_edges.rs Separate RemoveFalseEdges from SimplifyBranches 2021-11-30 17:14:48 -08:00
remove_noop_landing_pads.rs Remove deprecated LLVM-style inline assembly 2022-01-12 18:51:31 +01:00
remove_storage_markers.rs Update passes with new interface 2021-12-02 17:31:38 -08:00
remove_uninit_drops.rs Auto merge of #93984 - nnethercote:ChunkedBitSet, r=Mark-Simulacrum 2022-02-23 01:26:07 +00:00
remove_unneeded_drops.rs Add rationale for RemoveUnneededDrops 2021-11-30 17:25:30 -08:00
remove_zsts.rs Adopt let else in more places 2022-02-19 17:27:43 +01:00
required_consts.rs 7 - Make more use of let_chains 2022-03-01 07:43:12 -03:00
reveal_all.rs Overhaul TyS and Ty. 2022-02-15 16:03:24 +11:00
separate_const_switch.rs Remove deprecated LLVM-style inline assembly 2022-01-12 18:51:31 +01:00
shim.rs use List<Ty<'tcx>> for tuples 2022-02-21 07:09:11 +01:00
simplify_branches.rs Auto merge of #91279 - scottmcm:small-refactor, r=nagisa 2021-12-06 13:04:18 +00:00
simplify_comparison_integral.rs Remove in_band_lifetimes from rustc_mir_transform 2021-12-07 21:04:40 -08:00
simplify_try.rs Remove deprecated LLVM-style inline assembly 2022-01-12 18:51:31 +01:00
simplify.rs Adopt let else in more places 2022-02-19 17:27:43 +01:00
uninhabited_enum_branching.rs Clarify Layout interning. 2022-03-07 13:41:47 +11:00
unreachable_prop.rs Remove deprecated LLVM-style inline assembly 2022-01-12 18:51:31 +01:00