diff --git a/compiler/rustc_target/src/spec/base/wasm.rs b/compiler/rustc_target/src/spec/base/wasm.rs index f237391016e77..954a28fdbc153 100644 --- a/compiler/rustc_target/src/spec/base/wasm.rs +++ b/compiler/rustc_target/src/spec/base/wasm.rs @@ -124,6 +124,9 @@ pub fn options() -> TargetOptions { // representation, so this is disabled. generate_arange_section: false, + // LLVM has enabled target features by default that are not ready in Rust yet. + features: "-multivalue,-reference-types".into(), + ..Default::default() } } diff --git a/compiler/rustc_target/src/spec/targets/wasm32_unknown_emscripten.rs b/compiler/rustc_target/src/spec/targets/wasm32_unknown_emscripten.rs index 195ff46cf9d25..3c6c5e223e8cf 100644 --- a/compiler/rustc_target/src/spec/targets/wasm32_unknown_emscripten.rs +++ b/compiler/rustc_target/src/spec/targets/wasm32_unknown_emscripten.rs @@ -20,6 +20,7 @@ pub fn target() -> Target { panic_strategy: PanicStrategy::Unwind, no_default_libraries: false, families: cvs!["unix", "wasm"], + features: "-multivalue,-reference-types".into(), ..base::wasm::options() }; Target { diff --git a/compiler/rustc_target/src/spec/targets/wasm32_wasip1_threads.rs b/compiler/rustc_target/src/spec/targets/wasm32_wasip1_threads.rs index 38af48ab2665a..ee729d4f78d1c 100644 --- a/compiler/rustc_target/src/spec/targets/wasm32_wasip1_threads.rs +++ b/compiler/rustc_target/src/spec/targets/wasm32_wasip1_threads.rs @@ -57,7 +57,7 @@ pub fn target() -> Target { options.entry_name = "__main_void".into(); options.singlethread = false; - options.features = "+atomics,+bulk-memory,+mutable-globals".into(); + options.features = "-multivalue,-reference-types,+atomics,+bulk-memory".into(); Target { llvm_target: "wasm32-wasi".into(), diff --git a/compiler/rustc_target/src/spec/targets/wasm64_unknown_unknown.rs b/compiler/rustc_target/src/spec/targets/wasm64_unknown_unknown.rs index 8edde36dac623..bf50a4a70158e 100644 --- a/compiler/rustc_target/src/spec/targets/wasm64_unknown_unknown.rs +++ b/compiler/rustc_target/src/spec/targets/wasm64_unknown_unknown.rs @@ -35,7 +35,7 @@ pub fn target() -> Target { // Any engine that implements wasm64 will surely implement the rest of these // features since they were all merged into the official spec by the time // wasm64 was designed. - options.features = "+bulk-memory,+mutable-globals,+sign-ext,+nontrapping-fptoint".into(); + options.features = "-multivalue,-reference-types,+bulk-memory,+nontrapping-fptoint".into(); Target { llvm_target: "wasm64-unknown-unknown".into(),