Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update emscripten #55626

Merged
merged 9 commits into from
Nov 10, 2018
Merged

Update emscripten #55626

merged 9 commits into from
Nov 10, 2018

Conversation

nikic
Copy link
Contributor

@nikic nikic commented Nov 2, 2018

This updates emscripten to 1.38.15, which is based on LLVM 6.0.1 and would allow us to drop code for handling LLVM 4.

The main issue I ran into is that exporting statics through EXPORTED_FUNCTIONS no longer works. As far as I understand exporting non-functions doesn't really make sense under emscripten anyway, so I've modified the symbol export code to not even try.

Closes #52323.

@rust-highfive
Copy link
Collaborator

r? @varkor

(rust_highfive has picked a reviewer for you, use r? to override)

@rust-highfive
Copy link
Collaborator

⚠️ Warning ⚠️

  • These commits modify submodules.

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Nov 2, 2018
@cuviper
Copy link
Member

cuviper commented Nov 2, 2018

allow us to drop code for handling LLVM 4.

Per the discussion on internals, I think we could also drop LLVM 5 now. I do still need support for LLVM 6 for external LLVM though, and of course that's what you have here for emscripten too.
cc #55176 @glandium @gnzlbg

@nikic nikic force-pushed the update-emscripten branch from 1343839 to 520a4f0 Compare November 2, 2018 23:24
@nikic
Copy link
Contributor Author

nikic commented Nov 2, 2018

asmjs builder succeeded: https://travis-ci.org/rust-lang/rust/builds/449986971 I've dropped the travis.yml changes now, so this should be good to go.

@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-5.0 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
travis_time:end:00df9bc3:start=1541201148148720228,finish=1541201211740543880,duration=63591823652
$ git checkout -qf FETCH_HEAD
travis_fold:end:git.checkout

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#Pull-Requests-and-Security-Restrictions
$ export SCCACHE_BUCKET=rust-lang-ci-sccache2
$ export SCCACHE_REGION=us-west-1
Setting environment variables from .travis.yml
$ export IMAGE=x86_64-gnu-llvm-5.0
---
[00:00:00] rm 'src/doc/rust-by-example'
[00:00:00] Attempting with retry: sh -c rm -f download-src-doc-rust-by-example.tar.gz &&         curl -sSL -o download-src-doc-rust-by-example.tar.gz https://github.com/rust-lang/rust-by-example/archive/bc342a475c09b6df8004d518382e6d5b6bcb49f7.tar.gz
[00:00:00] rm 'src/llvm-emscripten'
[00:00:00] Attempting with retry: sh -c git submodule deinit -f  src/jemalloc src/tools/rust-installer src/liblibc src/doc/nomicon src/tools/cargo src/doc/reference src/tools/rls src/libcompiler_builtins src/tools/clippy src/tools/rustfmt src/tools/miri src/dlmalloc src/stdsimd src/tools/lld src/libbacktrace src/tools/lldb src/tools/clang &&     git submodule sync &&     git submodule update -j 16 --init --recursive  src/jemalloc src/tools/rust-installer src/liblibc src/doc/nomicon src/tools/cargo src/doc/reference src/tools/rls src/libcompiler_builtins src/tools/clippy src/tools/rustfmt src/tools/miri src/dlmalloc src/stdsimd src/tools/lld src/libbacktrace src/tools/lldb src/tools/clang
[00:00:00] Attempting with retry: sh -c rm -f download-src-llvm-emscripten.tar.gz &&         curl -sSL -o download-src-llvm-emscripten.tar.gz https://github.com/kripken/emscripten-fastcomp/archive/272d3ff91b38eac051bdbaf6cf84db5c901ce2f8.tar.gz
[00:00:00] Cleared directory 'src/doc/nomicon'
[00:00:00] Cleared directory 'src/doc/reference'
[00:00:00] Cleared directory 'src/jemalloc'
[00:00:00] Cleared directory 'src/libbacktrace'
---
[00:02:05] Successfully built b93c482bced4
[00:02:05] Successfully tagged rust-ci:latest
[00:02:05] Built container sha256:b93c482bced48c39fccb78e5116d5c636310a64824aff7a3ad58e868d39c29ea
[00:02:05] Uploading finished image to s3://rust-lang-ci-sccache2/docker/a417cc68142e4bf9128efe4949d1683dc75a696a66fcb9bd5fbca608a950d850ba9511a7420c7d0eae01f7ab8dd2fc3bf545f8bc696992231aa906370ca8d50a
[00:02:49] upload failed: - to s3://rust-lang-ci-sccache2/docker/a417cc68142e4bf9128efe4949d1683dc75a696a66fcb9bd5fbca608a950d850ba9511a7420c7d0eae01f7ab8dd2fc3bf545f8bc696992231aa906370ca8d50a Unable to locate credentials

[00:02:50] travis_time:end:196e9920:start=1541201282940948627,finish=1541201391085156684,duration=108144208057
[CI_JOB_NAME=x86_64-gnu-llvm-5.0]
[00:02:50] [CI_JOB_NAME=x86_64-gnu-llvm-5.0]
---
[00:48:17] .................................................................................................... 1400/4983
[00:48:19] .................................................................................i.................. 1500/4983
[00:48:22] ..................................................i................................................. 1600/4983
[00:48:26] .................................................................................................... 1700/4983
[00:48:30] ..................FF................................................................................ 1800/4983
[00:48:37] .................................................................................................... 2000/4983
[00:48:41] .................................................................................................... 2100/4983
[00:48:46] .................................................................................................... 2200/4983
[00:48:50] .................................................................................................... 2300/4983
---
[00:50:26] 1 error[E0668]: malformed inline assembly
[00:50:26] -   --> $DIR/inline-asm-bad-constraint.rs:29:9
[00:50:26] +   --> $DIR/inline-asm-bad-constraint.rs:31:9
[00:50:26] 3    |
[00:50:26] 4 LL |         asm!("" :"={rax"(rax)) //~ ERROR E0668
[00:50:26] 
[00:50:26] 6 
[00:50:26] 7 error[E0668]: malformed inline assembly
[00:50:26] -   ---
[00:50:26] -   ---
[00:50:26] diff of stderr:
[00:50:26] 
[00:50:26] 1 error[E0669]: invalid value for constraint in inline assembly
[00:50:26] +   --> $DIR/inline-asm-bad-operand.rs:31:24
[00:50:26] 3    |
[00:50:26] 3    |
[00:50:26] 4 LL |         asm!("" :: "r"("")); //~ ERROR E0669
[00:50:26] 
[00:50:26] 6 
[00:50:26] 6 
[00:50:26] 7 error[E0669]: invalid value for constraint in inline assembly
[00:50:26] +   --> $DIR/inline-asm-bad-operand.rs:36:32
[00:50:26] 9    |
[00:50:26] 9    |
[00:50:26] 10 LL |         asm!("ret" : : "{rdi}"(target)); //~ ERROR E0669
[00:50:26] 
[00:50:26] 12 
[00:50:26] 12 
[00:50:26] 13 error[E0669]: invalid value for constraint in inline assembly
[00:50:26] +   --> $DIR/inline-asm-bad-operand.rs:43:29
[00:50:26] 15    |
[00:50:26] 15    |
[00:50:26] 16 LL |     unsafe { asm!("" :: "i"(hello)) }; //~ ERROR E0669
[00:50:26] 
[00:50:26] 18 
[00:50:26] 18 
[00:50:26] 19 error[E0669]: invalid value for constraint in inline assembly
[00:50:26] +   --> $DIR/inline-asm-bad-operand.rs:51:38
[00:50:26] 21    |
[00:50:26] 21    |
[00:50:26] 22 LL |         asm!("movups $1, %xmm0"::"m"(arr)); //~ ERROR E0669
[00:50:26] 
[00:50:26] 24 
[00:50:26] 24 
[00:50:26] 25 error[E0669]: invalid value for constraint in inline assembly
[00:50:26] -   --> $DIR/inline-asm-bad-operand.rs:56:32
[00:50t" "json" "-Zui-testing" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/inline-asm-bad-operand/a" "-Crpath" "-O" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/inline-asm-bad-operand/auxiliary" "-A" "unused"
[00:50:26] ------------------------------------------
[00:50:26] 
[00:50:26] ------------------------------------------
[00:50:26] stderr:
[00:50:26] stderr:
[00:50:26] ------------------------------------------
[00:50:26] {"message":"invalid value for constraint in inline assembly","code":{"code":"E0669","explanation":null},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/inline-asm-bad-operand.rs","byte_start":802,"byte_end":804,"line_start":31,"line_end":31,"column_start":24,"column_end":26,"is_primary":true,"text":[{"text":"        asm!(\"\" :: \"r\"(\"\")); //~ ERROR E0669","highlight_start":24,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error[E0669]: invalid value for constraint in inline assembly\n  --> /checkout/src/test/ui/inline-asm-bad-operand.rs:31:24\n   |\nLL |         asm!(\"\" :: \"r\"(\"\")); //~ ERROR E0669\n   |                        ^^\n\n"}
[00:50:26] {"message":"invalid value for constraint in inline assembly","code":{"code":"E0669","explanation":null},"level":"error","spans":[{"file_name":"/checkout/src/test/ui/inline-asm-bad-operand.rs","byte_start":906,"byte_end":912,"line_start":36,"line_end":36,"column_start":32,"column_end":38,"is_pri---------------------------------------
[00:50:26] thread '[ui] ui/inline-asm-bad-operand.rs' panicked at 'explicit panic', tools/compiletest/src/runtest.rs:3284:9
[00:50:26] 
[00:50:26] 
[00:50:26] failures:
[00:50:26] failures:
[00:50:26]     [ui] ui/inline-asm-bad-constraint.rs
[00:50:26]     [ui] ui/inline-asm-bad-operand.rs
[00:50:26] 
[00:50:26] test result: FAILED. 4957 passed; 2 failed; 24 ignored; 0 measured; 0 filtered out
[00:50:26] 
[00:50:26] 
[00:50:26] 
[00:50:26] command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/compiletest" "--compile-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib" "--run-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "--rustc-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "--src-base" "/checkout/src/test/ui" "--build-base" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui" "--stage-id" "stage2-x86_64-unknown-linux-gnu" "--mode" "ui" "--target" "x86_64-unknown-linux-gnu" "--host" "x86_64-unknown-linux-gnu" "--llvm-filecheck" "/usr/lib/llvm-5.0/bin/FileCheck" "--host-rustcflags" "-Crpath -O -Zunstable-options " "--target-rustcflags" "-Crpath -O -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--docck-python" "/usr/bin/python2.7" "--lldb-python" "/usr/bin/python2.7" "--gdb" "/usr/bin/gdb" "--quiet" "--llvm-version" "5.0.0\n" "--system-llvm" "--cc" "" "--cxx" "" "--cflags" "" "--llvm-components" "" "--llvm-cxxflags" "" "--adb-path" "adb" "--adb-test-dir" "/data/tmp/work" "--anbootstrap-zemjd6kcyh2u
134760 ./obj/build/bootstrap/debug/incremental/bootstrap-zemjd6kcyh2u/s-f6b65xhqpq-6w5r22-3qkaut9jf50qa
130756 ./obj/build/x86_64-unknown-linux-gnu/stage0-bootstrap-tools/x86_64-unknown-linux-gnu
130752 ./obj/build/x86_64-unknown-linux-gnu/stage0-bootstrap-tools/x86_64-unknown-linux-gnu/release
123680 ./obj/build/x86_64-unknown-linux-gnu/stage0-bootstrap-tools/x86_64-unknown-linux-gnu/release/deps
112720 ./obj/build/x86_64-unknown-linux-gnu/stage1-std

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@nikic nikic force-pushed the update-emscripten branch 2 times, most recently from 124e8d4 to b65457e Compare November 3, 2018 00:31
@alexcrichton
Copy link
Member

@bors: r+

Thanks so much for doing this @nikic!

@bors
Copy link
Contributor

bors commented Nov 3, 2018

📌 Commit b65457e23d1d2ff82bee0675e64fc611d4e27fb7 has been approved by alexcrichton

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Nov 3, 2018
@gnzlbg
Copy link
Contributor

gnzlbg commented Nov 3, 2018

@cuviper I'll send a PR to update the minimum LLVM version 6 once this is merged.

@bors
Copy link
Contributor

bors commented Nov 3, 2018

☔ The latest upstream changes (presumably #55238) made this pull request unmergeable. Please resolve the merge conflicts.

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Nov 3, 2018
@nikic nikic force-pushed the update-emscripten branch from b65457e to 8b19578 Compare November 3, 2018 15:29
@nikic
Copy link
Contributor Author

nikic commented Nov 3, 2018

Rebased :)

@alexcrichton
Copy link
Member

@bors: r+

@bors
Copy link
Contributor

bors commented Nov 3, 2018

📌 Commit 8b195780729c5f3388b6d6fe51feb8f9d0c6afc7 has been approved by alexcrichton

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Nov 3, 2018
@bors
Copy link
Contributor

bors commented Nov 4, 2018

☔ The latest upstream changes (presumably #55349) made this pull request unmergeable. Please resolve the merge conflicts.

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Nov 4, 2018
nikic added 3 commits November 4, 2018 18:50
This updates emscripten to version 1.38.15, which is based on
LLVM 6.0.1.
Use eprintln!() to make sure stdio is flushed.
Either missing i128 or asm support
@kennytm kennytm removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Nov 9, 2018
@alexcrichton
Copy link
Member

Oh dear that's unfortunate :(

So that comes up because that builder (and dist-x86_64-linux) are building in absolutely ancient CentOS containers (circa like 2000). These ancient containers are used for their incredibly old versions of glibc (I'm talking like 2.5 vs today's 2.28) to ensure that the Linux binaries we produce are maximally compatible amongst all glibc distributions (binaries built against 2.5 can be run against anything in the future in theory)

Due to how ancient these containers are, though, no one really make sure code compiles in them any more. This means that C/C++ projects can often run afoul of very obscure errors (like the above) which happen in no modern environments. This is why we carry a few build-related patches on our LLVM fork as they're only applicable in these ancient environments.

In theory this is ideally fixed by sending a patch to upstream LLVM but I'm not sure that makes sense because not many would really benefit from this other than us (and it may be too onerous a patch to send upstream). If we can figure out workarounds to codify in the containers that'd be great, but otherwise our last resort is just another branch on our LLVM repo

@cuviper
Copy link
Member

cuviper commented Nov 9, 2018 via email

@alexcrichton
Copy link
Member

@bors: r+

@cuviper perhaps! I'd be worried though that it would generate incorrect #defines or subtly wrong code. The fix in this case for LLVM was to handle it being undefined, so I'm not sure that there's an easy general solution to these problems.

@bors
Copy link
Contributor

bors commented Nov 9, 2018

📌 Commit 82574e9 has been approved by alexcrichton

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Nov 9, 2018
@nikic
Copy link
Contributor Author

nikic commented Nov 9, 2018

Updated submodule to https://github.com/rust-lang/llvm/commits/rust-emscripten-2018-11-09 with a patch for missing PATH_MAX.

In theory this is ideally fixed by sending a patch to upstream LLVM but I'm not sure that makes sense because not many would really benefit from this other than us (and it may be too onerous a patch to send upstream). If we can figure out workarounds to codify in the containers that'd be great, but otherwise our last resort is just another branch on our LLVM repo

This issue has already been fixed upstream by llvm-mirror/llvm@612ed3c, but this was after some significant refactorings to the code, so this fix is not directly applicable to LLVM 6.0.1.

@nikic
Copy link
Contributor Author

nikic commented Nov 9, 2018

For anyone else who is wondering about this, found an old internals thread discussing the glibc requirement: https://internals.rust-lang.org/t/bumping-glibc-requirements-for-the-rust-toolchain/5111

@bors
Copy link
Contributor

bors commented Nov 9, 2018

⌛ Testing commit 82574e9 with merge cd32e05...

bors added a commit that referenced this pull request Nov 9, 2018
Update emscripten

This updates emscripten to 1.38.15, which is based on LLVM 6.0.1 and would allow us to drop code for handling LLVM 4.

The main issue I ran into is that exporting statics through `EXPORTED_FUNCTIONS` no longer works. As far as I understand exporting non-functions doesn't really make sense under emscripten anyway, so I've modified the symbol export code to not even try.

Closes #52323.
@bors
Copy link
Contributor

bors commented Nov 9, 2018

💔 Test failed - status-appveyor

@bors bors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Nov 9, 2018
@alexcrichton
Copy link
Member

Looking at a difference in step timings between that build and the last successful one:

+  10.669 (   0.940 =>   11.609) RustbookSrc { target: "i686-pc-windows-gnu", name: "reference", src: "C:\\projects\\rust\\src/doc" }
+  12.085 (   9.282 =>   21.367) Mingw { host: "i686-pc-windows-gnu" }
+  12.783 (  45.326 =>   58.109) WhitelistedRustc { stage: 2, target: "i686-pc-windows-gnu" }
+  13.671 (  19.788 =>   33.459) ToolBuild { compiler: Compiler { stage: 2, host: "i686-pc-windows-gnu" }, target: "i686-pc-windows-gnu", tool: "error_index_generator", path: "src/tools/error_index_generator", mode: ToolRustc, is_optional_tool: false, source_type: InTree, extra_features: [] }
+  14.372 (   1.540 =>   15.912) RustbookSrc { target: "i686-pc-windows-gnu", name: "rust-by-example", src: "C:\\projects\\rust\\src/doc" }
+  15.976 (  57.826 =>   73.802) Std { target: "i686-pc-windows-gnu", compiler: Compiler { stage: 0, host: "i686-pc-windows-gnu" } }
+  25.146 (  57.296 =>   82.442) CodegenBackend { compiler: Compiler { stage: 0, host: "i686-pc-windows-gnu" }, target: "i686-pc-windows-gnu", backend: "emscripten" }
+  27.006 (  24.841 =>   51.847) Lld { target: "i686-pc-windows-gnu" }
+  29.220 (  35.442 =>   64.662) LlvmTools { stage: 2, target: "i686-pc-windows-gnu" }
+  33.173 (  46.753 =>   79.926) ToolBuild { compiler: Compiler { stage: 0, host: "i686-pc-windows-gnu" }, target: "i686-pc-windows-gnu", tool: "unstable-book-gen", path: "src/tools/unstable-book-gen", mode: ToolBootstrap, is_optional_tool: false, source_type: InTree, extra_features: [] }
+  43.223 ( 115.001 =>  158.224) Rustdoc { host: "i686-pc-windows-gnu" }
+  44.174 (  68.947 =>  113.121) ToolBuild { compiler: Compiler { stage: 0, host: "i686-pc-windows-gnu" }, target: "i686-pc-windows-gnu", tool: "fabricate", path: "src/tools/rust-installer", mode: ToolBootstrap, is_optional_tool: false, source_type: Submodule, extra_features: [] }
+  60.018 ( 104.525 =>  164.543) Std { stage: 2, target: "i686-pc-windows-gnu" }
+  62.170 (  56.548 =>  118.718) CodegenBackend { compiler: Compiler { stage: 1, host: "i686-pc-windows-gnu" }, target: "i686-pc-windows-gnu", backend: "emscripten" }
+  71.112 ( 202.570 =>  273.682) ToolBuild { compiler: Compiler { stage: 0, host: "i686-pc-windows-gnu" }, target: "i686-pc-windows-gnu", tool: "rustbook", path: "src/tools/rustbook", mode: ToolBootstrap, is_optional_tool: false, source_type: InTree, extra_features: [] }
+  75.891 (  73.230 =>  149.121) CodegenBackend { compiler: Compiler { stage: 1, host: "i686-pc-windows-gnu" }, target: "i686-pc-windows-gnu", backend: "llvm" }
+  93.568 (  77.173 =>  170.741) Std { compiler: Compiler { stage: 2, host: "i686-pc-windows-gnu" }, target: "i686-pc-windows-gnu" }
+ 114.724 (  17.407 =>  132.131) Src
+ 118.227 (  90.900 =>  209.127) Std { target: "i686-pc-windows-gnu", compiler: Compiler { stage: 1, host: "i686-pc-windows-gnu" } }
+ 119.916 ( 166.637 =>  286.553) ToolBuild { compiler: Compiler { stage: 2, host: "i686-pc-windows-gnu" }, target: "i686-pc-windows-gnu", tool: "rustfmt", path: "src/tools/rustfmt", mode: ToolRustc, is_optional_tool: true, source_type: Submodule, extra_features: [] }
+ 120.558 ( 299.800 =>  420.358) ToolBuild { compiler: Compiler { stage: 2, host: "i686-pc-windows-gnu" }, target: "i686-pc-windows-gnu", tool: "rls", path: "src/tools/rls", mode: ToolRustc, is_optional_tool: true, source_type: Submodule, extra_features: ["clippy"] }
+ 135.869 ( 235.133 =>  371.002) ToolBuild { compiler: Compiler { stage: 2, host: "i686-pc-windows-gnu" }, target: "i686-pc-windows-gnu", tool: "clippy-driver", path: "src/tools/clippy", mode: ToolRustc, is_optional_tool: true, source_type: Submodule, extra_features: [] }
+ 143.900 ( 162.590 =>  306.490) Rustc { compiler: Compiler { stage: 2, host: "i686-pc-windows-gnu" } }
+ 183.831 ( 319.459 =>  503.290) ToolBuild { compiler: Compiler { stage: 2, host: "i686-pc-windows-gnu" }, target: "i686-pc-windows-gnu", tool: "cargo", path: "src/tools/cargo", mode: ToolRustc, is_optional_tool: false, source_type: Submodule, extra_features: [] }
+ 212.009 ( 726.210 =>  938.219) Rustc { target: "i686-pc-windows-gnu", compiler: Compiler { stage: 0, host: "i686-pc-windows-gnu" } }
+ 216.621 (  74.614 =>  291.235) CodegenBackend { compiler: Compiler { stage: 0, host: "i686-pc-windows-gnu" }, target: "i686-pc-windows-gnu", backend: "llvm" }
+ 219.807 ( 733.669 =>  953.476) Rustc { target: "i686-pc-windows-gnu", compiler: Compiler { stage: 1, host: "i686-pc-windows-gnu" } }
+ 220.512 (  79.156 =>  299.668) Docs { stage: 2, host: "i686-pc-windows-gnu" }
+ 220.943 ( 162.819 =>  383.762) Llvm { target: "i686-pc-windows-gnu", emscripten: true }
+ 459.226 ( 307.798 =>  767.024) Llvm { target: "i686-pc-windows-gnu", emscripten: false }
+ 949.788 ( 921.173 => 1870.961) Extended { stage: 2, host: "i686-pc-windows-gnu", target: "i686-pc-windows-gnu" }

it looks like... everything was just slower

AFAIK nothing here would slow down everything that much, so gonna try chalking this up to CI ...

@bors: retry

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Nov 9, 2018
@bors
Copy link
Contributor

bors commented Nov 10, 2018

⌛ Testing commit 82574e9 with merge 06118ea...

bors added a commit that referenced this pull request Nov 10, 2018
Update emscripten

This updates emscripten to 1.38.15, which is based on LLVM 6.0.1 and would allow us to drop code for handling LLVM 4.

The main issue I ran into is that exporting statics through `EXPORTED_FUNCTIONS` no longer works. As far as I understand exporting non-functions doesn't really make sense under emscripten anyway, so I've modified the symbol export code to not even try.

Closes #52323.
@bors
Copy link
Contributor

bors commented Nov 10, 2018

☀️ Test successful - status-appveyor, status-travis
Approved by: alexcrichton
Pushing 06118ea to master...

@bors bors merged commit 82574e9 into rust-lang:master Nov 10, 2018
@gnzlbg
Copy link
Contributor

gnzlbg commented Nov 10, 2018

Thank you ! So for clarification, the LLVM version uses by emscripten now is LLVM 6 (and not 7 like in the issue that was closed right?)

@nikic
Copy link
Contributor Author

nikic commented Nov 10, 2018

@gnzlbg Yep, that's right. We support three emscripten based targets, namely asmjs-unknown-emscripten, wasm32-unknown-emscripten and wasm32-experimental-emscripten. For the first two emscripten currently requires their LLVM 6.0.1 fork (which is what is updated here), while the latter uses the native LLVM wasm backend. As we still support the first two targets, we can't upgrade past LLVM 6.0.1 yet.

kennytm added a commit to pietroalbini/rust that referenced this pull request Nov 11, 2018
…crichton

Set BINARYEN_TRAP_MODE=clamp

This fixes the wasm32-unknown-emscripten test failure mentioned in rust-lang#55626 (comment), by making binaryen operate in clamp rather than trap mode.

The issue is that the current `-Zsaturating-float-casts` implementation uses `fpto[us]i` unconditionally (and selects afterwards), which does not work with trapping implementations of fpto[su]i, which emscripten uses by default.

I've left a FIXME to drop this flag once we have a better solution for saturating casts on the LLVM side.
;
bors added a commit that referenced this pull request Nov 11, 2018
Remove support for building against LLVM 4

With emscripten removed in #55626, we no longer need to support building against LLVM 4.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants