diff --git a/src/ci/docker/asmjs/Dockerfile b/src/ci/docker/asmjs/Dockerfile
index 2a0901691a55a..cb85cf3d9e9f0 100644
--- a/src/ci/docker/asmjs/Dockerfile
+++ b/src/ci/docker/asmjs/Dockerfile
@@ -29,6 +29,11 @@ ENV EM_CONFIG=/emsdk-portable/.emscripten
 
 ENV TARGETS=asmjs-unknown-emscripten
 
-ENV RUST_CONFIGURE_ARGS --enable-emscripten
+ENV RUST_CONFIGURE_ARGS --enable-emscripten --disable-optimize-tests
 
-ENV SCRIPT python2.7 ../x.py test --target $TARGETS
+ENV SCRIPT python2.7 ../x.py test --target $TARGETS \
+  src/test/run-pass \
+  src/test/run-fail \
+  src/libstd \
+  src/liballoc \
+  src/libcore
diff --git a/src/test/run-pass/deep.rs b/src/test/run-pass/deep.rs
index 9ae4f2c1e7085..d59fe8d813d24 100644
--- a/src/test/run-pass/deep.rs
+++ b/src/test/run-pass/deep.rs
@@ -8,9 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-
-
-
+// ignore-emscripten apparently blows the stack
 
 fn f(x: isize) -> isize {
     if x == 1 { return 1; } else { let y: isize = 1 + f(x - 1); return y; }
diff --git a/src/test/run-pass/float-int-invalid-const-cast.rs b/src/test/run-pass/float-int-invalid-const-cast.rs
index 80ab12482cbb7..d44f78922c702 100644
--- a/src/test/run-pass/float-int-invalid-const-cast.rs
+++ b/src/test/run-pass/float-int-invalid-const-cast.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-emscripten no i128 support
+
 #![feature(i128_type)]
 #![deny(const_err)]
 
diff --git a/src/test/run-pass/intrinsics-integer.rs b/src/test/run-pass/intrinsics-integer.rs
index bfa3a1e128a9a..cdfad51e648a3 100644
--- a/src/test/run-pass/intrinsics-integer.rs
+++ b/src/test/run-pass/intrinsics-integer.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-emscripten no i128 support
+
 #![feature(intrinsics, i128_type)]
 
 mod rusti {
diff --git a/src/test/run-pass/intrinsics-math.rs b/src/test/run-pass/intrinsics-math.rs
index a2c55634749cb..5132405a9d583 100644
--- a/src/test/run-pass/intrinsics-math.rs
+++ b/src/test/run-pass/intrinsics-math.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-emscripten fma not implemented in emscripten
+
 macro_rules! assert_approx_eq {
     ($a:expr, $b:expr) => ({
         let (a, b) = (&$a, &$b);
diff --git a/src/test/run-pass/issue-32947.rs b/src/test/run-pass/issue-32947.rs
index d0fef36efb9cd..d059a46b4df12 100644
--- a/src/test/run-pass/issue-32947.rs
+++ b/src/test/run-pass/issue-32947.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-emscripten FIXME(#45351)
+
 #![feature(repr_simd, test)]
 
 extern crate test;
diff --git a/src/test/run-pass/issue-38074.rs b/src/test/run-pass/issue-38074.rs
index 5c9a63b861663..2368ba8a110be 100644
--- a/src/test/run-pass/issue-38074.rs
+++ b/src/test/run-pass/issue-38074.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-emscripten FIXME(#45351)
+
 #![feature(platform_intrinsics, repr_simd)]
 
 extern "platform-intrinsic" {
diff --git a/src/test/run-pass/issue-39720.rs b/src/test/run-pass/issue-39720.rs
index f90696e3cdf16..9873a8c2bf44f 100644
--- a/src/test/run-pass/issue-39720.rs
+++ b/src/test/run-pass/issue-39720.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-emscripten FIXME(#45351)
+
 #![feature(repr_simd, platform_intrinsics)]
 
 #[repr(C)]
diff --git a/src/test/run-pass/mir_heavy_promoted.rs b/src/test/run-pass/mir_heavy_promoted.rs
index 9e033421574b9..b50852175776c 100644
--- a/src/test/run-pass/mir_heavy_promoted.rs
+++ b/src/test/run-pass/mir_heavy_promoted.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-emscripten apparently only works in optimized mode
+
 const TEST_DATA: [u8; 32 * 1024 * 1024] = [42; 32 * 1024 * 1024];
 
 // Check that the promoted copy of TEST_DATA doesn't
diff --git a/src/test/run-pass/next-power-of-two-overflow-debug.rs b/src/test/run-pass/next-power-of-two-overflow-debug.rs
index 2782f8c2a598c..599c6dfd31d90 100644
--- a/src/test/run-pass/next-power-of-two-overflow-debug.rs
+++ b/src/test/run-pass/next-power-of-two-overflow-debug.rs
@@ -10,6 +10,7 @@
 
 // compile-flags: -C debug_assertions=yes
 // ignore-wasm32-bare compiled with panic=abort by default
+// ignore-emscripten dies with an LLVM error
 
 #![feature(i128_type)]
 
diff --git a/src/test/run-pass/next-power-of-two-overflow-ndebug.rs b/src/test/run-pass/next-power-of-two-overflow-ndebug.rs
index f8bcb961c6833..f2312b70be679 100644
--- a/src/test/run-pass/next-power-of-two-overflow-ndebug.rs
+++ b/src/test/run-pass/next-power-of-two-overflow-ndebug.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 // compile-flags: -C debug_assertions=no
+// ignore-emscripten dies with an LLVM error
 
 #![feature(i128_type)]
 
diff --git a/src/test/run-pass/packed-struct-borrow-element.rs b/src/test/run-pass/packed-struct-borrow-element.rs
index 3041c73afba88..e725b25efee52 100644
--- a/src/test/run-pass/packed-struct-borrow-element.rs
+++ b/src/test/run-pass/packed-struct-borrow-element.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-emscripten weird assertion?
 
 #[repr(packed)]
 struct Foo {
diff --git a/src/test/run-pass/simd-intrinsic-generic-arithmetic.rs b/src/test/run-pass/simd-intrinsic-generic-arithmetic.rs
index 1894cd0084bcb..ac6d0c697ecc0 100644
--- a/src/test/run-pass/simd-intrinsic-generic-arithmetic.rs
+++ b/src/test/run-pass/simd-intrinsic-generic-arithmetic.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-emscripten FIXME(#45351) hits an LLVM assert
+
 #![feature(repr_simd, platform_intrinsics)]
 
 #[repr(simd)]
diff --git a/src/test/run-pass/simd-intrinsic-generic-comparison.rs b/src/test/run-pass/simd-intrinsic-generic-comparison.rs
index 5802fb30bd680..d27378ba89308 100644
--- a/src/test/run-pass/simd-intrinsic-generic-comparison.rs
+++ b/src/test/run-pass/simd-intrinsic-generic-comparison.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-emscripten FIXME(#45351) hits an LLVM assert
+
 #![feature(repr_simd, platform_intrinsics, concat_idents)]
 #![allow(non_camel_case_types)]
 
diff --git a/src/test/run-pass/simd-intrinsic-generic-elements.rs b/src/test/run-pass/simd-intrinsic-generic-elements.rs
index f0444c2717056..72fcef27a665b 100644
--- a/src/test/run-pass/simd-intrinsic-generic-elements.rs
+++ b/src/test/run-pass/simd-intrinsic-generic-elements.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+// ignore-emscripten FIXME(#45351) hits an LLVM assert
+
 #![feature(repr_simd, platform_intrinsics)]
 
 #[repr(simd)]