profile
viewpoint

emscripten-core/emscripten 21480

Emscripten: An LLVM-to-WebAssembly Compiler

emscripten-core/emsdk 1838

Emscripten SDK

sporchia/alttp_vt_randomizer 274

ALttP VT Randomizer and API

walkingeyerobot/r38 4

R-38 is an insulation strength. For managing drafts.

eve-val/eve-roster 3

Roster management tool for intergalactic spreadsheets

walkingeyerobot/mojhosto 3

Paper MoJhoSto!

walkingeyerobot/pokeemerald 1

Decompilation of Pokémon Emerald

push eventemscripten-core/emsdk

Sam Clegg

commit sha 2ec227afbec391f77328d7e740a2f6addad2f8fd

Pass -Wno-unused-variable when building binaryen during CI (#938) See https://github.com/emscripten-core/emsdk/pull/936 See https://github.com/WebAssembly/binaryen/issues/4353

view details

push time in 8 days

delete branch emscripten-core/emsdk

delete branch : disabled_binaryen_warning

delete time in 8 days

PR merged emscripten-core/emsdk

Reviewers
Pass `-Wno-unused-variable` when building binaryen during CI

See https://github.com/emscripten-core/emsdk/pull/936 See https://github.com/WebAssembly/binaryen/issues/4353

+5 -0

0 comment

1 changed file

sbc100

pr closed time in 8 days

PullRequestReviewEvent

pull request commentemscripten-core/emsdk

Always output a tarball from cc_binary to simplify logic.

Looks like an unrelated binaryen failure:

Ok, thanks! Let me know if there's anything else I should do to get this merged. Happy to wait and rebase if necessary. :)

walkingeyerobot

comment created time in 8 days

pull request commentemscripten-core/emsdk

Always output a tarball from cc_binary to simplify logic.

not sure why the test-linux check is failing; what I did shouldn't have any effect there.

walkingeyerobot

comment created time in 8 days

Pull request review commentemscripten-core/emsdk

Always output a tarball from cc_binary to simplify logic.

         wasm_base,         '--add-section=external_debug_info=debugsection.tmp']) -# If we have more than one output file then create tarball-if len(files) > 1:+# If we have one or more output files then create a tarball+if len(files) >= 1:

Done

walkingeyerobot

comment created time in 8 days

PullRequestReviewEvent

push eventwalkingeyerobot/emsdk

Mitch Foley

commit sha e7c8f49c37c6b836e4f8d908298932de470a95fd

better to use early return here

view details

push time in 8 days

pull request commentemscripten-core/emsdk

Always output a tarball from cc_binary to simplify logic.

Its maybe a little sad that --config=wasm a little less directly useful now since users will always need to untar the wasm file. I guess it will push more folks towards using wasm_cc_binaryen?

Hopefully it will. I believe the majority of emscripten users are building and using both the .wasm file and the .js wrapper, so this should affect a very small number of users. It's not too bad to generate a genrule that would untar the archive for you if someone is insistent in not using wasm_cc_binary. And if this does generate enough complaints, we can always go back and add the filetype dep.

In short, this simplifies the code, eliminates a potential external dependency, and shouldn't affect very many users.

walkingeyerobot

comment created time in 11 days

Pull request review commentemscripten-core/emsdk

Always output a tarball from cc_binary to simplify logic.

         wasm_base,         '--add-section=external_debug_info=debugsection.tmp']) -# If we have more than one output file then create tarball-if len(files) > 1:+# If we have one or more output files then create a tarball+if len(files) >= 1:

Yeah, I would prefer to maintain the check. I don't expect it to be triggered, but we're not losing anything by keeping it, so I figure it's better to keep it.

walkingeyerobot

comment created time in 11 days

PullRequestReviewEvent

pull request commentemscripten-core/emsdk

Bazel windows support

oh, and we need a test-bazel-windows on circleci

zaucy

comment created time in 11 days

pull request commentemscripten-core/emsdk

Bazel windows support

Ok, I made #936 to remove the need to add the filetype dep. Once that's merged you can integrate it with this PR.

I think link_wrapper.py also needs to be updated in this PR to be cross-platform. link_wrapper.py is always run as part of the toolchain and is what creates the tarball in the first place. wasm_binary.py is only run when using the wasm_cc_binary rule. After that's done and we resolve @trybka 's concerns this will be good to go.

zaucy

comment created time in 11 days

pull request commentemscripten-core/emsdk

Always output a tarball from cc_binary to simplify logic.

cc @trybka

walkingeyerobot

comment created time in 11 days

PR opened emscripten-core/emsdk

Always output a tarball from cc_binary to simplify logic.

This will change the result of --config=wasm builds that were previously outputting a single file.

Helps prepare for windows support (#814) and removes the need for #929 to add an external python dep.

+5 -27

0 comment

2 changed files

pr created time in 11 days

push eventwalkingeyerobot/emsdk

Mitch Foley

commit sha feaf1098147dd87ac2730419585466074af3d6ec

Always output a tarball from cc_binary to simplify logic. This will change the result of --config=wasm builds that were previously outputting a single file.

view details

push time in 11 days

pull request commentemscripten-core/emsdk

Bazel windows support

Overall I'm happy with this. I'd like to eliminate the filetype dep, not because I think adding such a dep is bad, but because we shouldn't actually need to check the mimetype of the file. I'll try to get a PR that eliminates the need to check the mimetype entirely in the next day or two, which will eliminate the need for the dep.

For a bit more context, a long time ago this was purely an asmjs toolchain. As such, it would only output a single file, which was a js file. When wasm support was added, suddenly we needed to output the .wasm and the .js files, but cc_binary wouldn't support that, so we decided to roll them into a tar, leaving in place the logic that if only a single file had been outputted we would simply copy it. Looking back, it would have been simpler and better to just always tar the result.

zaucy

comment created time in 11 days

pull request commentemscripten-core/emsdk

Bazel windows support

Haven't had a chance to dig into this fully yet, but looks good so far! I'll submit a full review later this week.

zaucy

comment created time in 14 days

pull request commentemscripten-core/emsdk

Forward Bazel platforms from CLI onward

cc @trybka - any thoughts on this?

kjlubick

comment created time in a month

pull request commentWebAssembly/binaryen

move fuzzing.h to be in the same directory as fuzzing.cpp.

sorry about this, was a bit too hasty in filing this PR. I was able to resolve the issue on my end. Thanks for taking a look!

walkingeyerobot

comment created time in a month

push eventwalkingeyerobot/binaryen

Mitch Foley

commit sha cc20b1eb90bcdfb13c21bdd4392faf118cdbbe8e

move fuzzing.h to be in the same directory as fuzzing.cpp.

view details

push time in a month

fork walkingeyerobot/binaryen

Compiler infrastructure and toolchain library for WebAssembly

fork in a month

push eventwalkingeyerobot/binaryen

walkingeyerobot

commit sha c95f5ade0b50b8373497297bbfbe606f685d8bc9

Fix an unused variable warning. NFC (#4170)

view details

Max Graey

commit sha 0e143ffb60b43eade8a7315e62c1f482536e3d1b

[Matcher] Add bval for matching boolean literals (#4162)

view details

Alon Zakai

commit sha fae5d8b78764556c93be5d8e2c2692596e554c4c

Tiny code cleanups. NFC (#4171) Remove an unnecessary include, and fix a typo in a macro declaration (that macro is not tested as it seems nothing uses DELEGATE_END yet, but I may be soon).

view details

Alon Zakai

commit sha 042e686e0b6f79ae532321f170a07c89a220b513

[Wasm GC] Fix invalid intermediate IR in OptimizeInstructions (#4169) We added an optional ReFinalize in OptimizeInstructions at some point, but that is not valid: The ReFinalize only updates types when all other works is done, but the pass works incrementally. The bug the fuzzer found is that a child is changed to be unreachable, and then the parent is optimized before finalize() is called on it, which led to an assertion being hit (as the child was unreachable but not the parent, which should also be). To fix this, do not change types in this pass. Emit an extra block with a declared type when necessary. Other passes can remove the extra block.

view details

Alon Zakai

commit sha 6c1724ce80d6e8b9daacd352c4a9dc4c98af6b03

Remove unneeded work in Precompute (#4176) isSSA is not called anywhere. See #4165

view details

Alon Zakai

commit sha e4f61e6296f05a2f3600c53aa466cb342c1603a6

Properly error on bad function names in text format (#4177)

view details

Alon Zakai

commit sha c50ab818ee6643b903ad3727f3fe10235fc801ff

Use UniqueDeferringQueue in Precompute (#4179)

view details

Max Graey

commit sha b6820540c8055dd7720ff369c7c0b6ebb34391f0

[Refactoring] Code reusage in spliceIntoBlock (#4174)

view details

Heejin Ahn

commit sha 6d46b436b54bdae040a64bd9dafb01a7f53a8233

Select initial contents automatically in fuzzer (#4173) This is another attempt to address #4073. Instead of relying on the timestamp, this examines git log to gather the list of test files added or modified within some fixed number of days. The number of days is currently set to 30 (= 1 month) but can be changed. This will be enabled by `--auto-initial-contents`, which is now disabled by default. Hopefully fixes #4073.

view details

Alon Zakai

commit sha 675295888609a688ee81dc9ad2024169da5aa7ed

[Wasm GC] Implement static (rtt-free) StructNew, ArrayNew, ArrayInit (#4172) See #4149 This modifies the test added in #4163 which used static casts on dynamically-created structs and arrays. That was technically not valid (as we won't want users to "mix" the two forms). This makes that test 100% static, which both fixes the test and gives test coverage to the new instructions added here.

view details

Ng Zhi An

commit sha 31252873463fd142a1eabb71b965da04a23a00e2

Add feature flag for relaxed-simd (#4183)

view details

Alon Zakai

commit sha 662f31c721ede0c3c2f5a455e711f4467225a475

RemoveUnusedBrs: Optimize if-of-if pattern (#4180) if (A) { if (B) { C } } => if (A ? B : 0) { C } when B has no side effects, and is fast enough to consider running unconditionally. In that case, we replace an if with a select and a zero, which is the same size, but should be faster and may be further optimized. As suggested in #4168

view details

Alon Zakai

commit sha 75e4e53292a5c6bf9736b0483de96667ba92774f

Precompute: Only run a single LocalGraph iteration (#4184) Precompute has a mode in which it propagates results from local.sets to local.gets. That constructs a LocalGraph which is a non-trivial amount of work. We used to run multiple iterations of this, but investigation shows that such opportunities are extremely rare, as doing just a single propagation iteration has no effect on the entire emscripten benchmark suite, nor on j2cl output. Furthermore, we run this pass twice in the normal pipeline (once early, once late) so even if there are such opportunities they may be optimized already. And, --converge is a way to get additional iterations of all passes if a user wants that, so it makes sense not to costly work for more iterations automatically. In effect, 99.99% of the time before this pass we would create the LocalGraph twice: once the first time, then a second time only to see that we can't actually optimize anything further. This PR makes us only create it once, which makes precompute-propagate 10% faster on j2cl and even faster on other things like poppler (33%) and LLVM (29%). See the change in the test suite for an example of a case that does require more than one iteration to be optimized. Note that even there, we only manage to get benefit from a second iteration by doing something that overlaps with another pass (optimizing out an if with condition 0), which shows even more how unnecessary the extra work was. See #4165

view details

Heejin Ahn

commit sha a6dbadb8d180aff3c481ad8fd3009a712c11b449

[Fuzzer] Don't prompt user when seed is given (#4185) Fuzzer shows the initial contents and prompts the user if they want to proceed after #4173, but when the fuzzer is used within a script called from `wasm-reduce`, we shouldn't pause for the user input. This shows the prompt only when there is no seed given. To do that, we now initialize the important initial contents from `main`. We used to assign those variables before we start `main`.

view details

Thomas Lively

commit sha ab3811dafb27edd81f919d0096630014184b3836

[wasm-split] Disallow mixing --profile, --keep-funcs, and --split-funcs (#4187) Previously the set of functions to keep was initially empty, then the profile added new functions to keep, then the --keep-funcs functions were added, then the --split-funcs functions were removed. This method of composing these different options was arbitrary and not necessarily intuitive, and it prevented reasonable workflows from working. For example, providing only a --split-funcs list would result in all functions being split out not matter which functions were listed. To make the behavior of these options, and --split-funcs in particular, more intuitive, disallow mixing them and when --split-funcs is used, split out only the listed functions.

view details

Alon Zakai

commit sha 11552aef2a36cb90c0d7087644871777cc4a0ef7

Inlining: Remove unneeded functions in linear time (#4190) By mistake the recent partial inlining work introduced quadratic time into the compiler: erasing a function from the list of functions takes linear time, which is why we have removeFunctions that does a group at a time. This isn't noticeable on small programs, but on j2cl output this makes the inlining-optimizing step 2x faster. See #4165

view details

Alon Zakai

commit sha a34746c6708cd3e9d0c6ae554cd6bd40d43bb5b8

Disable partial inlining by default and add a flag for it. (#4191) Locally I saw a 10% speedup on j2cl but reports of regressions have arrived, so let's disable it for now pending investigation. The option added here should make it easy to experiment.

view details

Heejin Ahn

commit sha 414d54a28b749af6abcaec6b85c99cc69de6b7dd

Exclude test/ from clang-tidy (#4193) We don't keep files within test/ clang-tidy compliant, so including this directory can generate CI errors when test files change.

view details

Heejin Ahn

commit sha 6b80ef6cccfd14b9b6620c5d41a148024d78576c

Clang-format c/cpp files in test directory (#4192) This clang-formats c/cpp files in test/ directory, and updates clang-format-diff.sh so that it does not ignore test/ directory anymore. bigswitch.cpp is excluded from formatting, because there are big commented-out code blocks, and apparently clang-format messes up formatting in them. Also to make matters worse, different clang-format versions do different things on those commented-out code blocks.

view details

Alon Zakai

commit sha 6b715407b96d270a5242871bb2ba680566ed304b

Add a SmallSet and use it in LocalGraph. NFC (#4188) A SmallSet starts with fixed storage that it uses in the simplest possible way (linear scan, no sorting). If it exceeds a size then it starts using a normal std::set. So for small amounts of data it avoids allocation and any other overhead. This adds a unit test and also uses it in LocalGraph which provides a large amount of additional coverage. I also changed an unrelated data structure from std::map to std::unordered_map which I noticed while doing profiling in LocalGraph. (And a tiny bit of additional refactoring there.) This makes LocalGraph-using passes like ssa-nomerge and precompute-propagate 10-15% faster on a bunch of real-world codebases I tested.

view details

push time in a month

issue commentemscripten-core/emsdk

Consider use of @platforms//cpu:wasm32 instead of just "wasm" for Bazel toolchain

I think this is a reasonable thing to change.

For historical context, when the toolchain was originally written, bazel did not provide a cpu:wasm32, so we provided our own. In fact, the original cpu that was targeted was "asmjs", with "wasm" coming a bit later.

kjlubick

comment created time in a month

pull request commentemscripten-core/emsdk

Improve flags in Bazel example

Sorry about being too quick on the trigger last time @sbc100 . I'll let you merge this one.

kjlubick

comment created time in a month

PullRequestReviewEvent
more