diff options
| author | bors <bors@rust-lang.org> | 2021-09-12 23:49:24 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-09-12 23:49:24 +0000 |
| commit | 96dee2825e9d3a587243e700c7c27ff9cf123cdf (patch) | |
| tree | c2fc8ea8dd67d3801a7e2c6bee0a22bdfbe0cddb /compiler/rustc_mir_transform/src | |
| parent | 51e514c0fb4f9afcaae3b02dd9ccb93e15b30ef8 (diff) | |
| parent | cdec87cafaa2d13ede2230ff430f909e67dbc751 (diff) | |
| download | rust-96dee2825e9d3a587243e700c7c27ff9cf123cdf.tar.gz rust-96dee2825e9d3a587243e700c7c27ff9cf123cdf.zip | |
Auto merge of #88839 - nbdd0121:alignof, r=nagisa
Introduce NullOp::AlignOf This PR introduces `Rvalue::NullaryOp(NullOp::AlignOf, ty)`, which will be lowered from `align_of`, similar to `size_of` lowering to `Rvalue::NullaryOp(NullOp::SizeOf, ty)`. The changes are originally part of #88700 but since it's not dependent on other changes and could have performance impact on its own, it's separated into its own PR.
Diffstat (limited to 'compiler/rustc_mir_transform/src')
| -rw-r--r-- | compiler/rustc_mir_transform/src/lower_intrinsics.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/compiler/rustc_mir_transform/src/lower_intrinsics.rs b/compiler/rustc_mir_transform/src/lower_intrinsics.rs index 2f89b041c27..5848163af72 100644 --- a/compiler/rustc_mir_transform/src/lower_intrinsics.rs +++ b/compiler/rustc_mir_transform/src/lower_intrinsics.rs @@ -92,14 +92,19 @@ impl<'tcx> MirPass<'tcx> for LowerIntrinsics { // since their semantics depend on the value of overflow-checks flag used // during codegen. Issue #35310. } - sym::size_of => { + sym::size_of | sym::min_align_of => { if let Some((destination, target)) = *destination { let tp_ty = substs.type_at(0); + let null_op = match intrinsic_name { + sym::size_of => NullOp::SizeOf, + sym::min_align_of => NullOp::AlignOf, + _ => bug!("unexpected intrinsic"), + }; block.statements.push(Statement { source_info: terminator.source_info, kind: StatementKind::Assign(Box::new(( destination, - Rvalue::NullaryOp(NullOp::SizeOf, tp_ty), + Rvalue::NullaryOp(null_op, tp_ty), ))), }); terminator.kind = TerminatorKind::Goto { target }; |
