diff options
| author | bjorn3 <bjorn3@users.noreply.github.com> | 2019-09-28 17:59:27 +0200 |
|---|---|---|
| committer | bjorn3 <bjorn3@users.noreply.github.com> | 2019-10-03 18:55:01 +0200 |
| commit | 58a9b648e830bef11864db8f657a2eac944ea552 (patch) | |
| tree | 06fe2bb3adc9f12040ef404f05259a688f3b484b /src | |
| parent | 8cee28db3e3a585022666bc0cec3b6702a448f65 (diff) | |
| download | rust-58a9b648e830bef11864db8f657a2eac944ea552.tar.gz rust-58a9b648e830bef11864db8f657a2eac944ea552.zip | |
Update cranelift, faerie and target-lexicon
Diffstat (limited to 'src')
| -rw-r--r-- | src/allocator.rs | 11 | ||||
| -rw-r--r-- | src/base.rs | 12 | ||||
| -rw-r--r-- | src/codegen_i128.rs | 2 | ||||
| -rw-r--r-- | src/common.rs | 2 | ||||
| -rw-r--r-- | src/main_shim.rs | 13 | ||||
| -rw-r--r-- | src/trap.rs | 2 |
6 files changed, 22 insertions, 20 deletions
diff --git a/src/allocator.rs b/src/allocator.rs index c4222a858ab..29e3ceb3a5a 100644 --- a/src/allocator.rs +++ b/src/allocator.rs @@ -73,8 +73,10 @@ pub fn codegen_inner(sess: &Session, module: &mut Module<impl Backend + 'static> .unwrap(); let mut ctx = Context::new(); - ctx.func = { - let mut bcx = FunctionBuilder::new(Function::with_name_signature(ExternalName::user(0, 0), sig.clone())); + ctx.func = Function::with_name_signature(ExternalName::user(0, 0), sig.clone()); + { + let mut func_ctx = FunctionBuilderContext::new(); + let mut bcx = FunctionBuilder::new(&mut ctx.func, &mut func_ctx); let ebb = bcx.create_ebb(); bcx.switch_to_block(ebb); @@ -90,9 +92,8 @@ pub fn codegen_inner(sess: &Session, module: &mut Module<impl Backend + 'static> let results = bcx.inst_results(call_inst).to_vec(); // Clone to prevent borrow error bcx.ins().return_(&results); bcx.seal_all_blocks(); - bcx.finalize() - }; - + bcx.finalize(); + } module.define_function(func_id, &mut ctx).unwrap(); } } diff --git a/src/base.rs b/src/base.rs index e58ab93158a..7cb079567f1 100644 --- a/src/base.rs +++ b/src/base.rs @@ -19,8 +19,10 @@ pub fn trans_fn<'clif, 'tcx, B: Backend + 'static>( .as_mut() .map(|debug_context| FunctionDebugContext::new(tcx, debug_context, mir, &name, &sig)); - // FIXME reuse Function and FunctionBuilder between multiple trans_fn calls - let mut bcx = FunctionBuilder::new(Function::with_name_signature(ExternalName::user(0, 0), sig)); + // Make FunctionBuilder + let mut func = Function::with_name_signature(ExternalName::user(0, 0), sig); + let mut func_ctx = FunctionBuilderContext::new(); + let mut bcx = FunctionBuilder::new(&mut func, &mut func_ctx); // Predefine ebb's let start_ebb = bcx.create_ebb(); @@ -56,9 +58,6 @@ pub fn trans_fn<'clif, 'tcx, B: Backend + 'static>( codegen_fn_content(&mut fx); }); - fx.bcx.seal_all_blocks(); - let func = fx.bcx.finalize(); - // Recover all necessary data from fx, before accessing func will prevent future access to it. let instance = fx.instance; let clif_comments = fx.clif_comments; @@ -239,6 +238,9 @@ fn codegen_fn_content(fx: &mut FunctionCx<'_, '_, impl Backend>) { } }; } + + fx.bcx.seal_all_blocks(); + fx.bcx.finalize(); } fn trans_stmt<'tcx>( diff --git a/src/codegen_i128.rs b/src/codegen_i128.rs index 2d2aa7e1a1d..6653b4e2d91 100644 --- a/src/codegen_i128.rs +++ b/src/codegen_i128.rs @@ -98,7 +98,7 @@ pub fn maybe_codegen<'tcx>( // Optimize `val >> 64`, because compiler_builtins uses it to deconstruct an 128bit // integer into its lsb and msb. // https://github.com/rust-lang-nursery/compiler-builtins/blob/79a6a1603d5672cbb9187ff41ff4d9b5048ac1cb/src/int/mod.rs#L217 - if let Some(64) = resolve_value_imm(&fx.bcx.func, rhs_val) { + if let Some(64) = resolve_value_imm(fx.bcx.func, rhs_val) { let (lhs_lsb, lhs_msb) = fx.bcx.ins().isplit(lhs_val); let all_zeros = fx.bcx.ins().iconst(types::I64, 0); let val = match (bin_op, is_signed) { diff --git a/src/common.rs b/src/common.rs index 85778f4c8e9..3ebae0506c5 100644 --- a/src/common.rs +++ b/src/common.rs @@ -279,7 +279,7 @@ pub struct FunctionCx<'clif, 'tcx, B: Backend + 'static> { pub instance: Instance<'tcx>, pub mir: &'tcx Body<'tcx>, - pub bcx: FunctionBuilder, + pub bcx: FunctionBuilder<'clif>, pub ebb_map: HashMap<BasicBlock, Ebb>, pub local_map: HashMap<Local, CPlace<'tcx>>, diff --git a/src/main_shim.rs b/src/main_shim.rs index 788b65a8230..17783b01d26 100644 --- a/src/main_shim.rs +++ b/src/main_shim.rs @@ -56,10 +56,10 @@ pub fn maybe_create_entry_wrapper(tcx: TyCtxt<'_>, module: &mut Module<impl Back .unwrap(); let mut ctx = Context::new(); - ctx.func = { - let mut bcx: FunctionBuilder = FunctionBuilder::new( - Function::with_name_signature(ExternalName::user(0, 0), cmain_sig.clone()) - ); + ctx.func = Function::with_name_signature(ExternalName::user(0, 0), cmain_sig.clone()); + { + let mut func_ctx = FunctionBuilderContext::new(); + let mut bcx: FunctionBuilder = FunctionBuilder::new(&mut ctx.func, &mut func_ctx); let ebb = bcx.create_ebb(); bcx.switch_to_block(ebb); @@ -93,9 +93,8 @@ pub fn maybe_create_entry_wrapper(tcx: TyCtxt<'_>, module: &mut Module<impl Back let result = bcx.inst_results(call_inst)[0]; bcx.ins().return_(&[result]); bcx.seal_all_blocks(); - bcx.finalize() - }; - + bcx.finalize(); + } m.define_function(cmain_func_id, &mut ctx).unwrap(); } } diff --git a/src/trap.rs b/src/trap.rs index e5e8a532ed9..9be9d166e35 100644 --- a/src/trap.rs +++ b/src/trap.rs @@ -36,7 +36,7 @@ fn codegen_print(fx: &mut FunctionCx<'_, '_, impl cranelift_module::Backend>, ms // Ignore DuplicateDefinition error, as the data will be the same let _ = fx.module.define_data(msg_id, &data_ctx); - let local_msg_id = fx.module.declare_data_in_func(msg_id, &mut fx.bcx.func); + let local_msg_id = fx.module.declare_data_in_func(msg_id, fx.bcx.func); #[cfg(debug_assertions)] { fx.add_entity_comment(local_msg_id, msg); |
