From 48aa60254863a6c495340e2f1b753f7b9a45a9d0 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sat, 10 Nov 2018 14:09:49 +0100 Subject: [PATCH] Set BINARYEN_TRAP_MODE=clamp This avoids trapping in the -Zsaturating-float-casts implementation. --- src/librustc_target/spec/wasm32_unknown_emscripten.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/librustc_target/spec/wasm32_unknown_emscripten.rs b/src/librustc_target/spec/wasm32_unknown_emscripten.rs index b4c09f86b8a97..2c80f3b4b3b02 100644 --- a/src/librustc_target/spec/wasm32_unknown_emscripten.rs +++ b/src/librustc_target/spec/wasm32_unknown_emscripten.rs @@ -11,12 +11,18 @@ use super::{LinkArgs, LinkerFlavor, Target, TargetOptions}; pub fn target() -> Result { + // FIXME(nikic) BINARYEN_TRAP_MODE=clamp is needed to avoid trapping in our + // -Zsaturating-float-casts implementation. This can be dropped if/when + // we have native fpto[su]i.sat intrinsics, or the implementation otherwise + // stops relying on non-trapping fpto[su]i. let mut post_link_args = LinkArgs::new(); post_link_args.insert(LinkerFlavor::Em, vec!["-s".to_string(), "BINARYEN=1".to_string(), "-s".to_string(), - "ERROR_ON_UNDEFINED_SYMBOLS=1".to_string()]); + "ERROR_ON_UNDEFINED_SYMBOLS=1".to_string(), + "-s".to_string(), + "BINARYEN_TRAP_MODE='clamp'".to_string()]); let opts = TargetOptions { dynamic_linking: false,