Skip to content

Commit 2a41fcd

Browse files
celinvaltedinski
authored andcommitted
Changes required after merge.
1. The layout_of API has changed. Adapt our codegen to use the new trait. 2. Needed to bump the version of bigint to get rid of compiler errors.
1 parent fd958b4 commit 2a41fcd

File tree

10 files changed

+25
-18
lines changed

10 files changed

+25
-18
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2338,9 +2338,9 @@ dependencies = [
23382338

23392339
[[package]]
23402340
name = "num-bigint"
2341-
version = "0.4.0"
2341+
version = "0.4.2"
23422342
source = "registry+https://github.com/rust-lang/crates.io-index"
2343-
checksum = "4e0d047c1062aa51e256408c560894e5251f08925980e53cf1aa5bd00eec6512"
2343+
checksum = "74e768dff5fb39a41b3bcd30bb25cf989706c90d028d1ad71971987aa309d535"
23442344
dependencies = [
23452345
"autocfg",
23462346
"num-integer",

compiler/rustc_codegen_llvm/src/gotoc/mir_to_goto/codegen/assumptions.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@ use crate::gotoc::cbmc::goto_program::{Expr, Location, Stmt, Symbol, Type};
66
use crate::gotoc::mir_to_goto::GotocCtx;
77
use rustc_middle::mir::interpret::{ConstValue, Scalar};
88
use rustc_middle::ty;
9+
use rustc_middle::ty::layout::LayoutOf;
910
use rustc_middle::ty::ScalarInt;
1011
use rustc_middle::ty::Ty;
1112
use rustc_middle::ty::{IntTy, UintTy};
12-
use rustc_target::abi::{FieldsShape, LayoutOf, Primitive, TagEncoding, Variants};
13+
use rustc_target::abi::{FieldsShape, Primitive, TagEncoding, Variants};
1314

1415
fn fold_invariants_gen<F: Fn(Expr, Expr) -> Expr>(mut iv: Vec<Expr>, dfl: Expr, comb: F) -> Expr {
1516
let mut res: Option<Expr> = None;

compiler/rustc_codegen_llvm/src/gotoc/mir_to_goto/codegen/intrinsic.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ use tracing::{debug, warn};
66
use crate::gotoc::cbmc::goto_program::{BuiltinFn, Expr, Location, Stmt, Type};
77
use crate::gotoc::mir_to_goto::GotocCtx;
88
use rustc_middle::mir::Place;
9+
use rustc_middle::ty::layout::LayoutOf;
910
use rustc_middle::ty::Instance;
1011
use rustc_middle::ty::{self, Ty, TyS};
1112
use rustc_span::Span;
12-
use rustc_target::abi::LayoutOf;
1313

1414
struct SizeAlign {
1515
size: Expr,

compiler/rustc_codegen_llvm/src/gotoc/mir_to_goto/codegen/operand.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@ use rustc_middle::mir::interpret::{
88
read_target_uint, AllocId, Allocation, ConstValue, GlobalAlloc, Scalar,
99
};
1010
use rustc_middle::mir::{Constant, ConstantKind, Operand};
11+
use rustc_middle::ty::layout::LayoutOf;
1112
use rustc_middle::ty::{
1213
self, Const, ConstKind, FloatTy, Instance, IntTy, ScalarInt, Ty, Uint, UintTy,
1314
};
1415
use rustc_span::def_id::DefId;
1516
use rustc_span::Span;
16-
use rustc_target::abi::{FieldsShape, LayoutOf, Size, TagEncoding, Variants};
17+
use rustc_target::abi::{FieldsShape, Size, TagEncoding, Variants};
1718
use tracing::debug;
1819

1920
enum AllocData<'a> {

compiler/rustc_codegen_llvm/src/gotoc/mir_to_goto/codegen/place.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@ use crate::gotoc::cbmc::goto_program::{Expr, Type};
99
use crate::gotoc::mir_to_goto::utils::slice_fat_ptr;
1010
use crate::gotoc::mir_to_goto::GotocCtx;
1111
use rustc_hir::Mutability;
12+
use rustc_middle::ty::layout::LayoutOf;
1213
use rustc_middle::{
1314
mir::{Field, Local, Place, ProjectionElem},
1415
ty::{self, Ty, TyS, TypeAndMut, VariantDef},
1516
};
16-
use rustc_target::abi::{LayoutOf, TagEncoding, Variants};
17+
use rustc_target::abi::{TagEncoding, Variants};
1718
use tracing::{debug, warn};
1819

1920
/// A projection in RMC can either be to a type (the normal case),

compiler/rustc_codegen_llvm/src/gotoc/mir_to_goto/codegen/rvalue.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ use crate::gotoc::mir_to_goto::GotocCtx;
1010
use num::bigint::BigInt;
1111
use rustc_middle::mir::{AggregateKind, BinOp, CastKind, NullOp, Operand, Place, Rvalue, UnOp};
1212
use rustc_middle::ty::adjustment::PointerCast;
13+
use rustc_middle::ty::layout::LayoutOf;
1314
use rustc_middle::ty::{self, Instance, IntTy, Ty, UintTy, VtblEntry, COMMON_VTABLE_ENTRIES};
14-
use rustc_target::abi::{FieldsShape, LayoutOf, Primitive, TagEncoding, Variants};
15+
use rustc_target::abi::{FieldsShape, Primitive, TagEncoding, Variants};
1516
use tracing::{debug, warn};
1617

1718
impl<'tcx> GotocCtx<'tcx> {

compiler/rustc_codegen_llvm/src/gotoc/mir_to_goto/codegen/statement.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ use rustc_middle::mir::{
99
BasicBlock, Operand, Place, Statement, StatementKind, SwitchTargets, Terminator, TerminatorKind,
1010
};
1111
use rustc_middle::ty;
12+
use rustc_middle::ty::layout::LayoutOf;
1213
use rustc_middle::ty::{Instance, InstanceDef, Ty};
1314
use rustc_span::Span;
14-
use rustc_target::abi::{FieldsShape, LayoutOf, Primitive, TagEncoding, Variants};
15+
use rustc_target::abi::{FieldsShape, Primitive, TagEncoding, Variants};
1516
use smallvec::SmallVec;
1617
use std::convert::TryInto;
1718
use tracing::debug;

compiler/rustc_codegen_llvm/src/gotoc/mir_to_goto/codegen/typ.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use crate::gotoc::mir_to_goto::GotocCtx;
99
use rustc_ast::ast::Mutability;
1010
use rustc_index::vec::IndexVec;
1111
use rustc_middle::mir::{HasLocalDecls, Local, Operand, Place, Rvalue};
12+
use rustc_middle::ty::layout::LayoutOf;
1213
use rustc_middle::ty::print::with_no_trimmed_paths;
1314
use rustc_middle::ty::print::FmtPrinter;
1415
use rustc_middle::ty::subst::InternalSubsts;
@@ -19,8 +20,7 @@ use rustc_middle::ty::{
1920
use rustc_span;
2021
use rustc_span::def_id::DefId;
2122
use rustc_target::abi::{
22-
Abi::Vector, FieldsShape, Integer, Layout, LayoutOf, Primitive, TagEncoding, VariantIdx,
23-
Variants,
23+
Abi::Vector, FieldsShape, Integer, Layout, Primitive, TagEncoding, VariantIdx, Variants,
2424
};
2525
use rustc_target::spec::abi::Abi;
2626
use std::collections::BTreeMap;

compiler/rustc_codegen_llvm/src/gotoc/mir_to_goto/context/goto_ctx.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,13 @@ use rustc_data_structures::stable_map::FxHashMap;
2828
use rustc_data_structures::sync::MetadataRef;
2929
use rustc_middle::middle::cstore::MetadataLoader;
3030
use rustc_middle::mir::interpret::Allocation;
31-
use rustc_middle::ty::layout::{HasParamEnv, HasTyCtxt, TyAndLayout};
31+
use rustc_middle::span_bug;
32+
use rustc_middle::ty::layout::{HasParamEnv, HasTyCtxt, LayoutError, LayoutOfHelpers, TyAndLayout};
3233
use rustc_middle::ty::{self, Instance, Ty, TyCtxt};
3334
use rustc_session::Session;
35+
use rustc_span::source_map::Span;
3436
use rustc_target::abi::Endian;
35-
use rustc_target::abi::{HasDataLayout, LayoutOf, TargetDataLayout};
37+
use rustc_target::abi::{HasDataLayout, TargetDataLayout};
3638
use rustc_target::spec::Target;
3739
use std::path::Path;
3840

@@ -228,12 +230,12 @@ impl<'tcx> GotocCtx<'tcx> {
228230
}
229231
}
230232

231-
impl LayoutOf<'tcx> for GotocCtx<'tcx> {
232-
type Ty = Ty<'tcx>;
233-
type TyAndLayout = TyAndLayout<'tcx>;
233+
impl LayoutOfHelpers<'tcx> for GotocCtx<'tcx> {
234+
type LayoutOfResult = TyAndLayout<'tcx>;
234235

235-
fn layout_of(&self, ty: Self::Ty) -> Self::TyAndLayout {
236-
self.tcx.layout_of(ty::ParamEnv::reveal_all().and(ty)).unwrap()
236+
#[inline]
237+
fn handle_layout_err(&self, err: LayoutError<'tcx>, span: Span, ty: Ty<'tcx>) -> ! {
238+
span_bug!(span, "failed to get layout for `{}`: {}", ty, err)
237239
}
238240
}
239241

compiler/rustc_codegen_llvm/src/gotoc/mir_to_goto/overrides/hooks.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ use crate::gotoc::mir_to_goto::utils::{
1616
use crate::gotoc::mir_to_goto::GotocCtx;
1717
use rustc_hir::definitions::DefPathDataName;
1818
use rustc_middle::mir::{BasicBlock, Place};
19+
use rustc_middle::ty::layout::LayoutOf;
1920
use rustc_middle::ty::print::with_no_trimmed_paths;
2021
use rustc_middle::ty::{Instance, InstanceDef, Ty, TyCtxt};
2122
use rustc_span::Span;
22-
use rustc_target::abi::LayoutOf;
2323
use std::rc::Rc;
2424

2525
pub trait GotocTypeHook<'tcx> {

0 commit comments

Comments
 (0)