diff options
| author | Scott McMurray <scottmcm@users.noreply.github.com> | 2017-12-03 21:53:48 -0800 |
|---|---|---|
| committer | Scott McMurray <scottmcm@users.noreply.github.com> | 2017-12-03 21:53:48 -0800 |
| commit | 1bc402fd80525b4615ba5cce2eae3e5db05b85a0 (patch) | |
| tree | af4e75ddcc0df3bb9d8f1c5b91b08de2c80ca051 | |
| parent | fdfbcf85d55da97ed1a00823510b876018047aaf (diff) | |
| download | rust-1bc402fd80525b4615ba5cce2eae3e5db05b85a0.tar.gz rust-1bc402fd80525b4615ba5cce2eae3e5db05b85a0.zip | |
Add an i128_lowering flag in TargetOptions
Not actually enabled by default anywhere yet.
| -rw-r--r-- | src/librustc/session/config.rs | 5 | ||||
| -rw-r--r-- | src/librustc_back/target/mod.rs | 5 | ||||
| -rw-r--r-- | src/librustc_mir/transform/lower_128bit.rs | 4 | ||||
| -rw-r--r-- | src/test/mir-opt/lower_128bit_debug_test.rs | 2 | ||||
| -rw-r--r-- | src/test/mir-opt/lower_128bit_test.rs | 2 |
5 files changed, 13 insertions, 5 deletions
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs index 70b63886084..81e18fe536d 100644 --- a/src/librustc/session/config.rs +++ b/src/librustc/session/config.rs @@ -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 { diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs index 7599a60ba5a..6f9ba5dada2 100644 --- a/src/librustc_back/target/mod.rs +++ b/src/librustc_back/target/mod.rs @@ -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 { @@ -521,6 +525,7 @@ impl Default for TargetOptions { requires_lto: false, singlethread: false, no_builtins: false, + i128_lowering: false, } } } diff --git a/src/librustc_mir/transform/lower_128bit.rs b/src/librustc_mir/transform/lower_128bit.rs index 7027d827c84..80456efff83 100644 --- a/src/librustc_mir/transform/lower_128bit.rs +++ b/src/librustc_mir/transform/lower_128bit.rs @@ -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 } diff --git a/src/test/mir-opt/lower_128bit_debug_test.rs b/src/test/mir-opt/lower_128bit_debug_test.rs index 4f9bb809e99..82d08155547 100644 --- a/src/test/mir-opt/lower_128bit_debug_test.rs +++ b/src/test/mir-opt/lower_128bit_debug_test.rs @@ -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)] diff --git a/src/test/mir-opt/lower_128bit_test.rs b/src/test/mir-opt/lower_128bit_test.rs index e8c8412db80..4b54f9a6d44 100644 --- a/src/test/mir-opt/lower_128bit_test.rs +++ b/src/test/mir-opt/lower_128bit_test.rs @@ -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)] |
