Skip to content

Commit

Permalink
Add an i128_lowering flag in TargetOptions
Browse files Browse the repository at this point in the history
Not actually enabled by default anywhere yet.
  • Loading branch information
scottmcm committed Dec 4, 2017
1 parent fdfbcf8 commit 1bc402f
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 5 deletions.
5 changes: 3 additions & 2 deletions src/librustc/session/config.rs
Expand Up @@ -1176,9 +1176,10 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
saturating_float_casts: bool = (false, parse_bool, [TRACKED],
"make float->int casts UB-free: numbers outside the integer type's range are clipped to \
the max/min integer respectively, and NaN is mapped to 0"),
lower_128bit_ops: bool = (false, parse_bool, [TRACKED],
lower_128bit_ops: Option<bool> = (None, parse_opt_bool, [TRACKED],
"rewrite operators on i128 and u128 into lang item calls (typically provided \
by compiler-builtins) so translation doesn't need to support them"),
by compiler-builtins) so translation doesn't need to support them,
overriding the default for the current target"),
}

pub fn default_lib_output() -> CrateType {
Expand Down
5 changes: 5 additions & 0 deletions src/librustc_back/target/mod.rs
Expand Up @@ -453,6 +453,10 @@ pub struct TargetOptions {
/// Whether library functions call lowering/optimization is disabled in LLVM
/// for this target unconditionally.
pub no_builtins: bool,

/// Whether to lower 128-bit operations to compiler_builtins calls. Use if
/// your backend only supports 64-bit and smaller math.
pub i128_lowering: bool,
}

impl Default for TargetOptions {
Expand Down Expand Up @@ -521,6 +525,7 @@ impl Default for TargetOptions {
requires_lto: false,
singlethread: false,
no_builtins: false,
i128_lowering: false,
}
}
}
Expand Down
4 changes: 3 additions & 1 deletion src/librustc_mir/transform/lower_128bit.rs
Expand Up @@ -25,7 +25,9 @@ impl MirPass for Lower128Bit {
tcx: TyCtxt<'a, 'tcx, 'tcx>,
_src: MirSource,
mir: &mut Mir<'tcx>) {
if !tcx.sess.opts.debugging_opts.lower_128bit_ops {
let debugging_override = tcx.sess.opts.debugging_opts.lower_128bit_ops;
let target_default = tcx.sess.host.options.i128_lowering;
if !debugging_override.unwrap_or(target_default) {
return
}

Expand Down
2 changes: 1 addition & 1 deletion src/test/mir-opt/lower_128bit_debug_test.rs
Expand Up @@ -13,7 +13,7 @@
// ignore-asmjs
// ignore-emscripten

// compile-flags: -Z lower_128bit_ops -C debug_assertions=yes
// compile-flags: -Z lower_128bit_ops=yes -C debug_assertions=yes

#![feature(i128_type)]

Expand Down
2 changes: 1 addition & 1 deletion src/test/mir-opt/lower_128bit_test.rs
Expand Up @@ -13,7 +13,7 @@
// ignore-asmjs
// ignore-emscripten

// compile-flags: -Z lower_128bit_ops -C debug_assertions=no
// compile-flags: -Z lower_128bit_ops=yes -C debug_assertions=no

#![feature(i128_type)]

Expand Down

0 comments on commit 1bc402f

Please sign in to comment.