Skip to content

Commit 6a31385

Browse files
committed
Misc target related improvements
1 parent 55e0779 commit 6a31385

File tree

5 files changed

+27
-12
lines changed

5 files changed

+27
-12
lines changed

src/base.rs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,14 @@ pub(crate) fn codegen_fn<'tcx>(
109109
let context = &mut cx.cached_context;
110110
context.func = func;
111111

112-
crate::pretty_clif::write_clif_file(tcx, "unopt", None, instance, &context, &clif_comments);
112+
crate::pretty_clif::write_clif_file(
113+
tcx,
114+
"unopt",
115+
module.isa(),
116+
instance,
117+
&context,
118+
&clif_comments,
119+
);
113120

114121
// Verify function
115122
verify_func(tcx, &clif_comments, &context.func);
@@ -126,7 +133,13 @@ pub(crate) fn codegen_fn<'tcx>(
126133

127134
// Perform rust specific optimizations
128135
tcx.sess.time("optimize clif ir", || {
129-
crate::optimize::optimize_function(tcx, instance, context, &mut clif_comments);
136+
crate::optimize::optimize_function(
137+
tcx,
138+
module.isa(),
139+
instance,
140+
context,
141+
&mut clif_comments,
142+
);
130143
});
131144

132145
// Define function
@@ -141,7 +154,7 @@ pub(crate) fn codegen_fn<'tcx>(
141154
crate::pretty_clif::write_clif_file(
142155
tcx,
143156
"opt",
144-
Some(module.isa()),
157+
module.isa(),
145158
instance,
146159
&context,
147160
&clif_comments,

src/driver/aot.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,13 +290,15 @@ pub(crate) fn run_aot(
290290
None
291291
};
292292

293+
// FIXME handle `-Ctarget-cpu=native`
294+
let target_cpu = tcx.sess.opts.cg.target_cpu.as_ref().unwrap_or(&tcx.sess.target.cpu).to_owned();
293295
Box::new((
294296
CodegenResults {
295297
modules,
296298
allocator_module,
297299
metadata_module,
298300
metadata,
299-
linker_info: LinkerInfo::new(tcx, crate::target_triple(tcx.sess).to_string()),
301+
linker_info: LinkerInfo::new(tcx, target_cpu),
300302
crate_info: CrateInfo::new(tcx),
301303
},
302304
work_products,

src/driver/jit.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ pub(crate) fn run_jit(tcx: TyCtxt<'_>, backend_config: BackendConfig) -> ! {
159159
AbiParam::new(jit_module.target_config().pointer_type()),
160160
],
161161
returns: vec![AbiParam::new(jit_module.target_config().pointer_type() /*isize*/)],
162-
call_conv: CallConv::triple_default(&crate::target_triple(tcx.sess)),
162+
call_conv: jit_module.target_config().default_call_conv,
163163
};
164164
let start_func_id = jit_module.declare_function("main", Linkage::Import, &start_sig).unwrap();
165165
let finalized_start: *const u8 = jit_module.get_finalized_function(start_func_id);

src/optimize/mod.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
//! Various optimizations specific to cg_clif
22
3+
use cranelift_codegen::isa::TargetIsa;
4+
35
use crate::prelude::*;
46

57
pub(crate) mod peephole;
68

79
pub(crate) fn optimize_function<'tcx>(
810
tcx: TyCtxt<'tcx>,
11+
isa: &dyn TargetIsa,
912
instance: Instance<'tcx>,
1013
ctx: &mut Context,
1114
clif_comments: &mut crate::pretty_clif::CommentWriter,
1215
) {
1316
// FIXME classify optimizations over opt levels once we have more
1417

15-
crate::pretty_clif::write_clif_file(tcx, "preopt", None, instance, &ctx, &*clif_comments);
18+
crate::pretty_clif::write_clif_file(tcx, "preopt", isa, instance, &ctx, &*clif_comments);
1619
crate::base::verify_func(tcx, &*clif_comments, &ctx.func);
1720
}

src/pretty_clif.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ pub(crate) fn write_ir_file(
233233
pub(crate) fn write_clif_file<'tcx>(
234234
tcx: TyCtxt<'tcx>,
235235
postfix: &str,
236-
isa: Option<&dyn cranelift_codegen::isa::TargetIsa>,
236+
isa: &dyn cranelift_codegen::isa::TargetIsa,
237237
instance: Instance<'tcx>,
238238
context: &cranelift_codegen::Context,
239239
mut clif_comments: &CommentWriter,
@@ -242,22 +242,19 @@ pub(crate) fn write_clif_file<'tcx>(
242242
tcx,
243243
|| format!("{}.{}.clif", tcx.symbol_name(instance).name, postfix),
244244
|file| {
245-
let value_ranges = isa
246-
.map(|isa| context.build_value_labels_ranges(isa).expect("value location ranges"));
247-
248245
let mut clif = String::new();
249246
cranelift_codegen::write::decorate_function(
250247
&mut clif_comments,
251248
&mut clif,
252249
&context.func,
253-
&DisplayFunctionAnnotations { isa, value_ranges: value_ranges.as_ref() },
250+
&DisplayFunctionAnnotations { isa: Some(isa), value_ranges: None },
254251
)
255252
.unwrap();
256253

257254
writeln!(file, "test compile")?;
258255
writeln!(file, "set is_pic")?;
259256
writeln!(file, "set enable_simd")?;
260-
writeln!(file, "target {} haswell", crate::target_triple(tcx.sess))?;
257+
writeln!(file, "target {} nehalem", crate::target_triple(tcx.sess))?;
261258
writeln!(file)?;
262259
file.write_all(clif.as_bytes())?;
263260
Ok(())

0 commit comments

Comments
 (0)