Merge commit 'c19edfd71a1d0ddef86c2c67fdb40718d40a72b4' into sync_cg_clif-2022-07-25
This commit is contained in:
@@ -175,10 +175,37 @@ fn compile_fn<'tcx>(
|
||||
);
|
||||
});
|
||||
|
||||
#[cfg(any())] // This is never true
|
||||
let _clif_guard = {
|
||||
use std::fmt::Write;
|
||||
|
||||
let func_clone = context.func.clone();
|
||||
let clif_comments_clone = clif_comments.clone();
|
||||
let mut clif = String::new();
|
||||
for flag in module.isa().flags().iter() {
|
||||
writeln!(clif, "set {}", flag).unwrap();
|
||||
}
|
||||
write!(clif, "target {}", module.isa().triple().architecture.to_string()).unwrap();
|
||||
for isa_flag in module.isa().isa_flags().iter() {
|
||||
write!(clif, " {}", isa_flag).unwrap();
|
||||
}
|
||||
writeln!(clif, "\n").unwrap();
|
||||
crate::PrintOnPanic(move || {
|
||||
let mut clif = clif.clone();
|
||||
::cranelift_codegen::write::decorate_function(
|
||||
&mut &clif_comments_clone,
|
||||
&mut clif,
|
||||
&func_clone,
|
||||
)
|
||||
.unwrap();
|
||||
clif
|
||||
})
|
||||
};
|
||||
|
||||
// Define function
|
||||
tcx.sess.time("define function", || {
|
||||
context.want_disasm = crate::pretty_clif::should_write_ir(tcx);
|
||||
module.define_function(func_id, context).unwrap()
|
||||
module.define_function(func_id, context).unwrap();
|
||||
});
|
||||
|
||||
// Write optimized function to file for debugging
|
||||
@@ -815,15 +842,7 @@ pub(crate) fn codegen_place<'tcx>(
|
||||
for elem in place.projection {
|
||||
match elem {
|
||||
PlaceElem::Deref => {
|
||||
if cplace.layout().ty.is_box() {
|
||||
cplace = cplace
|
||||
.place_field(fx, Field::new(0)) // Box<T> -> Unique<T>
|
||||
.place_field(fx, Field::new(0)) // Unique<T> -> NonNull<T>
|
||||
.place_field(fx, Field::new(0)) // NonNull<T> -> *mut T
|
||||
.place_deref(fx);
|
||||
} else {
|
||||
cplace = cplace.place_deref(fx);
|
||||
}
|
||||
cplace = cplace.place_deref(fx);
|
||||
}
|
||||
PlaceElem::Field(field, _ty) => {
|
||||
cplace = cplace.place_field(fx, field);
|
||||
|
||||
Reference in New Issue
Block a user