binaryen icon indicating copy to clipboard operation
binaryen copied to clipboard

wasm-opt is 35x slower on windows compared to linux

Open jspanchu opened this issue 6 months ago • 5 comments

See the output produced by building a ~46MB wasm binary and ~47MB JSPI wasm binary using EMCC_DEBUG=2.

On linux:

profiler:DEBUG: block "wasm_opt" took 46.559 seconds

On windows:

profiler:DEBUG: block "wasm_opt" took 1565.294 seconds

Complete build log:

  1. windows compile_output.log

  2. linux compile_output.log

emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 4.0.10 (b7dc6e5747465580df5984e723b9d1f10d8e804b)
Copyright (C) 2025 the Emscripten authors (see AUTHORS.txt)
This is free and open source software under the MIT license.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

wasm-opt version 123 (version_123-168-g8c82b6884)

jspanchu avatar Jul 09 '25 17:07 jspanchu

Are you able to reproduce this by calling wasm-opt directly? If so, would you be able to profile the wasm-opt run on Windows and share the results?

tlively avatar Jul 09 '25 17:07 tlively

Added the --debug arg to wasm-opt

link:DEBUG: using binaryen
shared:DEBUG: successfully executed 'C:/dev/trame-vtklocal/dev/emsdk/upstream\bin\wasm-opt.exe' --version
reading...
reading binary from bin\addonWebAssembly.wasm
Loading 'bin\addonWebAssembly.wasm'...
running passes...
[PassRunner] running passes
[PassRunner]   running pass: strip-target-features... 0.0003187 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: post-emscripten...       removeData: removing whole segment
removeData: start/stop symbols not found (__start_em_js, __stop_em_js)
removeData: start/stop symbols not found (__start_em_lib_deps, __stop_em_lib_deps)
0.802761 seconds.
[PassRunner]   (validating)
[PassRunner] passes took 0.80308 seconds.
[PassRunner] (final validation)
[PassRunner] running passes
[PassRunner]   running pass: duplicate-function-elimination...     [PassRunner] running nested passes
[PassRunner]   running pass: ... 0.556305 seconds.
[PassRunner] nested passes took 0.556305 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.435878 seconds.
[PassRunner] nested passes took 0.435878 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.526486 seconds.
[PassRunner] nested passes took 0.526486 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.375267 seconds.
[PassRunner] nested passes took 0.375267 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.514158 seconds.
[PassRunner] nested passes took 0.514158 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.364753 seconds.
[PassRunner] nested passes took 0.364753 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.513661 seconds.
[PassRunner] nested passes took 0.513661 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.33908 seconds.
[PassRunner] nested passes took 0.33908 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.516308 seconds.
[PassRunner] nested passes took 0.516308 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.339763 seconds.
[PassRunner] nested passes took 0.339763 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.508749 seconds.
[PassRunner] nested passes took 0.508749 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.327876 seconds.
[PassRunner] nested passes took 0.327876 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.520676 seconds.
[PassRunner] nested passes took 0.520676 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.313825 seconds.
[PassRunner] nested passes took 0.313825 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.506792 seconds.
[PassRunner] nested passes took 0.506792 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.314467 seconds.
[PassRunner] nested passes took 0.314467 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.503674 seconds.
[PassRunner] nested passes took 0.503674 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.310924 seconds.
[PassRunner] nested passes took 0.310924 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.506439 seconds.
[PassRunner] nested passes took 0.506439 seconds.
8.91383 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: remove-unused-module-elements...      0.801982 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: memory-packing...                     [PassRunner] running nested passes
[PassRunner]   running pass: ... 0.313427 seconds.
[PassRunner] nested passes took 0.313427 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.319921 seconds.
[PassRunner] nested passes took 0.319921 seconds.
0.770384 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: once-reduction...                     [PassRunner] running nested passes
[PassRunner]   running pass: ... 0.332337 seconds.
[PassRunner] nested passes took 0.332337 seconds.
0.367268 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: ssa-nomerge...                        6.97152 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: dce...                                3.00278 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: remove-unused-names...                0.522011 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: remove-unused-brs...                  2.60739 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: remove-unused-names...                0.455973 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: optimize-instructions...              4.36377 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: pick-load-signs...                    0.60997 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: precompute-propagate...               12.3418 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: optimize-added-constants-propagate... 10.1663 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: code-pushing...                       1.09689 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: tuple-optimization...                 0.0234369 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: simplify-locals-nostructure...        30.6987 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: vacuum...                             4.82714 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: reorder-locals...                     0.760593 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: remove-unused-brs...                  2.10769 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: merge-locals...                       3.89933 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: coalesce-locals...                    6.71078 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: local-cse...                          7.29697 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: simplify-locals...                    30.1371 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: vacuum...                             4.14732 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: reorder-locals...                     0.664374 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: coalesce-locals...                    5.86078 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: reorder-locals...                     0.634818 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: vacuum...                             4.00306 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: code-folding...                       1.69728 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: merge-blocks...                       1.73593 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: remove-unused-brs...                  2.50519 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: remove-unused-names...                0.463544 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: merge-blocks...                       1.82466 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: precompute-propagate...               9.45911 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: optimize-instructions...              3.41236 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: rse...                                4.09718 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: vacuum...                             4.03699 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: dae-optimizing...                     [PassRunner] running nested passes
[PassRunner]   running pass: ... 3.47214 seconds.
[PassRunner] nested passes took 3.47214 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.817221 seconds.
[PassRunner] nested passes took 0.817221 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.470977 seconds.
[PassRunner]   running pass: ... 0.31106 seconds.
[PassRunner]   running pass: ... 0.12778 seconds.
[PassRunner]   running pass: ... 0.0373268 seconds.
[PassRunner]   running pass: ... 0.155101 seconds.
[PassRunner]   running pass: ... 0.0339807 seconds.
[PassRunner]   running pass: ... 0.199371 seconds.
[PassRunner]   running pass: ... 0.042649 seconds.
[PassRunner]   running pass: ... 0.424807 seconds.
[PassRunner]   running pass: ... 0.253329 seconds.
[PassRunner]   running pass: ... 0.0567962 seconds.
[PassRunner]   running pass: ... 0.0162038 seconds.
[PassRunner]   running pass: ... 1.02311 seconds.
[PassRunner]   running pass: ... 0.194751 seconds.
[PassRunner]   running pass: ... 0.0460377 seconds.
[PassRunner]   running pass: ... 0.12732 seconds.
[PassRunner]   running pass: ... 0.380308 seconds.
[PassRunner]   running pass: ... 0.456897 seconds.
[PassRunner]   running pass: ... 0.297064 seconds.
[PassRunner]   running pass: ... 1.18456 seconds.
[PassRunner]   running pass: ... 0.159856 seconds.
[PassRunner]   running pass: ... 0.0431093 seconds.
[PassRunner]   running pass: ... 0.386952 seconds.
[PassRunner]   running pass: ... 0.0432471 seconds.
[PassRunner]   running pass: ... 0.151991 seconds.
[PassRunner]   running pass: ... 0.0455582 seconds.
[PassRunner]   running pass: ... 0.0960124 seconds.
[PassRunner]   running pass: ... 0.125336 seconds.
[PassRunner]   running pass: ... 0.034122 seconds.
[PassRunner]   running pass: ... 0.103381 seconds.
[PassRunner]   running pass: ... 0.465008 seconds.
[PassRunner]   running pass: ... 0.204099 seconds.
[PassRunner]   running pass: ... 0.273387 seconds.
[PassRunner]   running pass: ... 0.155598 seconds.
[PassRunner] nested passes took 8.12709 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 3.01562 seconds.
[PassRunner] nested passes took 3.01562 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.539528 seconds.
[PassRunner] nested passes took 0.539528 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0898355 seconds.
[PassRunner]   running pass: ... 0.045439 seconds.
[PassRunner]   running pass: ... 0.0306439 seconds.
[PassRunner]   running pass: ... 0.0175691 seconds.
[PassRunner]   running pass: ... 0.0287474 seconds.
[PassRunner]   running pass: ... 0.0200988 seconds.
[PassRunner]   running pass: ... 0.0295904 seconds.
[PassRunner]   running pass: ... 0.0223694 seconds.
[PassRunner]   running pass: ... 0.0573331 seconds.
[PassRunner]   running pass: ... 0.038184 seconds.
[PassRunner]   running pass: ... 0.0204007 seconds.
[PassRunner]   running pass: ... 0.0157467 seconds.
[PassRunner]   running pass: ... 0.112369 seconds.
[PassRunner]   running pass: ... 0.0285038 seconds.
[PassRunner]   running pass: ... 0.0172054 seconds.
[PassRunner]   running pass: ... 0.0253551 seconds.
[PassRunner]   running pass: ... 0.0365293 seconds.
[PassRunner]   running pass: ... 0.0644461 seconds.
[PassRunner]   running pass: ... 0.0538968 seconds.
[PassRunner]   running pass: ... 0.127838 seconds.
[PassRunner]   running pass: ... 0.0443073 seconds.
[PassRunner]   running pass: ... 0.0297701 seconds.
[PassRunner]   running pass: ... 0.084605 seconds.
[PassRunner]   running pass: ... 0.0207684 seconds.
[PassRunner]   running pass: ... 0.0335665 seconds.
[PassRunner]   running pass: ... 0.0382833 seconds.
[PassRunner]   running pass: ... 0.0410778 seconds.
[PassRunner]   running pass: ... 0.0381296 seconds.
[PassRunner]   running pass: ... 0.0188752 seconds.
[PassRunner]   running pass: ... 0.0273366 seconds.
[PassRunner]   running pass: ... 0.0654458 seconds.
[PassRunner]   running pass: ... 0.0310599 seconds.
[PassRunner]   running pass: ... 0.0443132 seconds.
[PassRunner]   running pass: ... 0.0252432 seconds.
[PassRunner] nested passes took 1.42488 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 2.7125 seconds.
[PassRunner] nested passes took 2.7125 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.535533 seconds.
[PassRunner] nested passes took 0.535533 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0721756 seconds.
[PassRunner]   running pass: ... 0.0344597 seconds.
[PassRunner]   running pass: ... 0.0263195 seconds.
[PassRunner]   running pass: ... 0.0180847 seconds.
[PassRunner]   running pass: ... 0.0254744 seconds.
[PassRunner]   running pass: ... 0.0170448 seconds.
[PassRunner]   running pass: ... 0.0304658 seconds.
[PassRunner]   running pass: ... 0.0202216 seconds.
[PassRunner]   running pass: ... 0.0547818 seconds.
[PassRunner]   running pass: ... 0.0341543 seconds.
[PassRunner]   running pass: ... 0.0195483 seconds.
[PassRunner]   running pass: ... 0.0159608 seconds.
[PassRunner]   running pass: ... 0.119482 seconds.
[PassRunner]   running pass: ... 0.0267279 seconds.
[PassRunner]   running pass: ... 0.0161837 seconds.
[PassRunner]   running pass: ... 0.0240819 seconds.
[PassRunner]   running pass: ... 0.040655 seconds.
[PassRunner]   running pass: ... 0.0519662 seconds.
[PassRunner]   running pass: ... 0.0407995 seconds.
[PassRunner]   running pass: ... 0.11408 seconds.
[PassRunner]   running pass: ... 0.0285576 seconds.
[PassRunner]   running pass: ... 0.0162304 seconds.
[PassRunner]   running pass: ... 0.0465858 seconds.
[PassRunner]   running pass: ... 0.0155727 seconds.
[PassRunner]   running pass: ... 0.0248674 seconds.
[PassRunner]   running pass: ... 0.0225182 seconds.
[PassRunner]   running pass: ... 0.0207706 seconds.
[PassRunner]   running pass: ... 0.0240185 seconds.
[PassRunner]   running pass: ... 0.0173234 seconds.
[PassRunner]   running pass: ... 0.0293344 seconds.
[PassRunner]   running pass: ... 0.0575336 seconds.
[PassRunner]   running pass: ... 0.030657 seconds.
[PassRunner]   running pass: ... 0.0432015 seconds.
[PassRunner]   running pass: ... 0.0260811 seconds.
[PassRunner] nested passes took 1.20592 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.192675 seconds.
[PassRunner] nested passes took 0.192675 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0280435 seconds.
[PassRunner]   running pass: ... 0.0165561 seconds.
[PassRunner]   running pass: ... 0.0192716 seconds.
[PassRunner]   running pass: ... 0.0152485 seconds.
[PassRunner]   running pass: ... 0.0158076 seconds.
[PassRunner]   running pass: ... 0.0145625 seconds.
[PassRunner]   running pass: ... 0.0147698 seconds.
[PassRunner]   running pass: ... 0.0179242 seconds.
[PassRunner]   running pass: ... 0.0260073 seconds.
[PassRunner]   running pass: ... 0.0177092 seconds.
[PassRunner]   running pass: ... 0.0145523 seconds.
[PassRunner]   running pass: ... 0.0142595 seconds.
[PassRunner]   running pass: ... 0.0234769 seconds.
[PassRunner]   running pass: ... 0.015101 seconds.
[PassRunner]   running pass: ... 0.0121557 seconds.
[PassRunner]   running pass: ... 0.0143714 seconds.
[PassRunner]   running pass: ... 0.0152739 seconds.
[PassRunner]   running pass: ... 0.0333746 seconds.
[PassRunner]   running pass: ... 0.0149974 seconds.
[PassRunner]   running pass: ... 0.0281181 seconds.
[PassRunner]   running pass: ... 0.014687 seconds.
[PassRunner]   running pass: ... 0.0141477 seconds.
[PassRunner]   running pass: ... 0.0394247 seconds.
[PassRunner]   running pass: ... 0.0124695 seconds.
[PassRunner]   running pass: ... 0.0135507 seconds.
[PassRunner]   running pass: ... 0.023193 seconds.
[PassRunner]   running pass: ... 0.0178524 seconds.
[PassRunner]   running pass: ... 0.0158786 seconds.
[PassRunner]   running pass: ... 0.0176861 seconds.
[PassRunner]   running pass: ... 0.0183835 seconds.
[PassRunner]   running pass: ... 0.0255588 seconds.
[PassRunner]   running pass: ... 0.0153575 seconds.
[PassRunner]   running pass: ... 0.0303481 seconds.
[PassRunner]   running pass: ... 0.0146151 seconds.
[PassRunner] nested passes took 0.644734 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 3.19822 seconds.
[PassRunner] nested passes took 3.19822 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.028876 seconds.
[PassRunner]   running pass: ... 0.0151732 seconds.
[PassRunner]   running pass: ... 0.0156713 seconds.
[PassRunner]   running pass: ... 0.0137592 seconds.
[PassRunner]   running pass: ... 0.0139042 seconds.
[PassRunner]   running pass: ... 0.0133687 seconds.
[PassRunner]   running pass: ... 0.0181009 seconds.
[PassRunner]   running pass: ... 0.0179462 seconds.
[PassRunner]   running pass: ... 0.0245272 seconds.
[PassRunner]   running pass: ... 0.016202 seconds.
[PassRunner]   running pass: ... 0.0144 seconds.
[PassRunner]   running pass: ... 0.0143425 seconds.
[PassRunner]   running pass: ... 0.0217418 seconds.
[PassRunner]   running pass: ... 0.0152935 seconds.
[PassRunner]   running pass: ... 0.0133224 seconds.
[PassRunner]   running pass: ... 0.0147135 seconds.
[PassRunner]   running pass: ... 0.0140057 seconds.
[PassRunner]   running pass: ... 0.0299272 seconds.
[PassRunner]   running pass: ... 0.0141061 seconds.
[PassRunner]   running pass: ... 0.0193765 seconds.
[PassRunner]   running pass: ... 0.0138333 seconds.
[PassRunner]   running pass: ... 0.0128626 seconds.
[PassRunner]   running pass: ... 0.0302753 seconds.
[PassRunner]   running pass: ... 0.0128504 seconds.
[PassRunner]   running pass: ... 0.0139144 seconds.
[PassRunner]   running pass: ... 0.0240039 seconds.
[PassRunner]   running pass: ... 0.0193303 seconds.
[PassRunner]   running pass: ... 0.0152715 seconds.
[PassRunner]   running pass: ... 0.0145436 seconds.
[PassRunner]   running pass: ... 0.0183348 seconds.
[PassRunner]   running pass: ... 0.031465 seconds.
[PassRunner]   running pass: ... 0.0176163 seconds.
[PassRunner]   running pass: ... 0.0302832 seconds.
[PassRunner]   running pass: ... 0.0205635 seconds.
[PassRunner] nested passes took 0.623906 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0220828 seconds.
[PassRunner] nested passes took 0.0220828 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0471002 seconds.
[PassRunner]   running pass: ... 0.0216508 seconds.
[PassRunner]   running pass: ... 0.0195719 seconds.
[PassRunner]   running pass: ... 0.0153078 seconds.
[PassRunner]   running pass: ... 0.0155296 seconds.
[PassRunner]   running pass: ... 0.0152706 seconds.
[PassRunner]   running pass: ... 0.0153811 seconds.
[PassRunner]   running pass: ... 0.0190511 seconds.
[PassRunner]   running pass: ... 0.0262394 seconds.
[PassRunner]   running pass: ... 0.0170786 seconds.
[PassRunner]   running pass: ... 0.0162695 seconds.
[PassRunner]   running pass: ... 0.0161135 seconds.
[PassRunner]   running pass: ... 0.0210977 seconds.
[PassRunner]   running pass: ... 0.0161248 seconds.
[PassRunner]   running pass: ... 0.01378 seconds.
[PassRunner]   running pass: ... 0.0156776 seconds.
[PassRunner]   running pass: ... 0.0159009 seconds.
[PassRunner]   running pass: ... 0.0312495 seconds.
[PassRunner]   running pass: ... 0.0160678 seconds.
[PassRunner]   running pass: ... 0.0215357 seconds.
[PassRunner]   running pass: ... 0.0159918 seconds.
[PassRunner]   running pass: ... 0.0137446 seconds.
[PassRunner]   running pass: ... 0.0316887 seconds.
[PassRunner]   running pass: ... 0.0132833 seconds.
[PassRunner]   running pass: ... 0.0151573 seconds.
[PassRunner]   running pass: ... 0.0205631 seconds.
[PassRunner]   running pass: ... 0.0185977 seconds.
[PassRunner]   running pass: ... 0.0153716 seconds.
[PassRunner]   running pass: ... 0.0151665 seconds.
[PassRunner]   running pass: ... 0.0187399 seconds.
[PassRunner]   running pass: ... 0.0262689 seconds.
[PassRunner]   running pass: ... 0.0162345 seconds.
[PassRunner]   running pass: ... 0.0308094 seconds.
[PassRunner]   running pass: ... 0.0153636 seconds.
[PassRunner] nested passes took 0.662979 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.025404 seconds.
[PassRunner] nested passes took 0.025404 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0264338 seconds.
[PassRunner]   running pass: ... 0.0152312 seconds.
[PassRunner]   running pass: ... 0.0162881 seconds.
[PassRunner]   running pass: ... 0.0137263 seconds.
[PassRunner]   running pass: ... 0.0147325 seconds.
[PassRunner]   running pass: ... 0.014171 seconds.
[PassRunner]   running pass: ... 0.0142029 seconds.
[PassRunner]   running pass: ... 0.0176688 seconds.
[PassRunner]   running pass: ... 0.0259025 seconds.
[PassRunner]   running pass: ... 0.0176608 seconds.
[PassRunner]   running pass: ... 0.0159139 seconds.
[PassRunner]   running pass: ... 0.0157357 seconds.
[PassRunner]   running pass: ... 0.0221074 seconds.
[PassRunner]   running pass: ... 0.0155384 seconds.
[PassRunner]   running pass: ... 0.0134072 seconds.
[PassRunner]   running pass: ... 0.0280729 seconds.
[PassRunner]   running pass: ... 0.0144379 seconds.
[PassRunner]   running pass: ... 0.0304549 seconds.
[PassRunner]   running pass: ... 0.0160795 seconds.
[PassRunner]   running pass: ... 0.0249374 seconds.
[PassRunner]   running pass: ... 0.0145879 seconds.
[PassRunner]   running pass: ... 0.0127844 seconds.
[PassRunner]   running pass: ... 0.0334407 seconds.
[PassRunner]   running pass: ... 0.0131914 seconds.
[PassRunner]   running pass: ... 0.0144619 seconds.
[PassRunner]   running pass: ... 0.0194434 seconds.
[PassRunner]   running pass: ... 0.0182487 seconds.
[PassRunner]   running pass: ... 0.014896 seconds.
[PassRunner]   running pass: ... 0.0140067 seconds.
[PassRunner]   running pass: ... 0.0175753 seconds.
[PassRunner]   running pass: ... 0.0285965 seconds.
[PassRunner]   running pass: ... 0.0152032 seconds.
[PassRunner]   running pass: ... 0.034333 seconds.
[PassRunner]   running pass: ... 0.0154498 seconds.
[PassRunner] nested passes took 0.638922 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0240645 seconds.
[PassRunner] nested passes took 0.0240645 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.364681 seconds.
[PassRunner] nested passes took 0.364681 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.109642 seconds.
[PassRunner]   running pass: ... 0.0788083 seconds.
[PassRunner]   running pass: ... 0.0404319 seconds.
[PassRunner]   running pass: ... 0.0210391 seconds.
[PassRunner]   running pass: ... 0.0339247 seconds.
[PassRunner]   running pass: ... 0.0200306 seconds.
[PassRunner]   running pass: ... 0.0441992 seconds.
[PassRunner]   running pass: ... 0.0262167 seconds.
[PassRunner]   running pass: ... 0.107895 seconds.
[PassRunner]   running pass: ... 0.071066 seconds.
[PassRunner]   running pass: ... 0.0294757 seconds.
[PassRunner]   running pass: ... 0.0163278 seconds.
[PassRunner]   running pass: ... 0.203431 seconds.
[PassRunner]   running pass: ... 0.0526272 seconds.
[PassRunner]   running pass: ... 0.022106 seconds.
[PassRunner]   running pass: ... 0.0366336 seconds.
[PassRunner]   running pass: ... 0.0511322 seconds.
[PassRunner]   running pass: ... 0.0862341 seconds.
[PassRunner]   running pass: ... 0.063598 seconds.
[PassRunner]   running pass: ... 0.224209 seconds.
[PassRunner]   running pass: ... 0.0430146 seconds.
[PassRunner]   running pass: ... 0.0200357 seconds.
[PassRunner]   running pass: ... 0.0756673 seconds.
[PassRunner]   running pass: ... 0.0200371 seconds.
[PassRunner]   running pass: ... 0.0432737 seconds.
[PassRunner]   running pass: ... 0.030993 seconds.
[PassRunner]   running pass: ... 0.0362665 seconds.
[PassRunner]   running pass: ... 0.0340257 seconds.
[PassRunner]   running pass: ... 0.020007 seconds.
[PassRunner]   running pass: ... 0.0377513 seconds.
[PassRunner]   running pass: ... 0.109568 seconds.
[PassRunner]   running pass: ... 0.0470318 seconds.
[PassRunner]   running pass: ... 0.0748884 seconds.
[PassRunner]   running pass: ... 0.0586695 seconds.
[PassRunner] nested passes took 1.99026 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 3.56918 seconds.
[PassRunner] nested passes took 3.56918 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0351507 seconds.
[PassRunner]   running pass: ... 0.0193074 seconds.
[PassRunner]   running pass: ... 0.0225785 seconds.
[PassRunner]   running pass: ... 0.0321821 seconds.
[PassRunner]   running pass: ... 0.031325 seconds.
[PassRunner]   running pass: ... 0.0173176 seconds.
[PassRunner]   running pass: ... 0.0176904 seconds.
[PassRunner]   running pass: ... 0.0202186 seconds.
[PassRunner]   running pass: ... 0.0304446 seconds.
[PassRunner]   running pass: ... 0.0285232 seconds.
[PassRunner]   running pass: ... 0.0294751 seconds.
[PassRunner]   running pass: ... 0.0264555 seconds.
[PassRunner]   running pass: ... 0.0390429 seconds.
[PassRunner]   running pass: ... 0.0200759 seconds.
[PassRunner]   running pass: ... 0.0138123 seconds.
[PassRunner]   running pass: ... 0.0162323 seconds.
[PassRunner]   running pass: ... 0.015793 seconds.
[PassRunner]   running pass: ... 0.0325922 seconds.
[PassRunner]   running pass: ... 0.0172421 seconds.
[PassRunner]   running pass: ... 0.0228819 seconds.
[PassRunner]   running pass: ... 0.0162279 seconds.
[PassRunner]   running pass: ... 0.0145939 seconds.
[PassRunner]   running pass: ... 0.0336716 seconds.
[PassRunner]   running pass: ... 0.0215255 seconds.
[PassRunner]   running pass: ... 0.0267742 seconds.
[PassRunner]   running pass: ... 0.0233151 seconds.
[PassRunner]   running pass: ... 0.0278487 seconds.
[PassRunner]   running pass: ... 0.0168591 seconds.
[PassRunner]   running pass: ... 0.0161587 seconds.
[PassRunner]   running pass: ... 0.0209175 seconds.
[PassRunner]   running pass: ... 0.0367775 seconds.
[PassRunner]   running pass: ... 0.0260523 seconds.
[PassRunner]   running pass: ... 0.0512719 seconds.
[PassRunner]   running pass: ... 0.0265406 seconds.
[PassRunner] nested passes took 0.846876 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0577625 seconds.
[PassRunner] nested passes took 0.0577625 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0393641 seconds.
[PassRunner]   running pass: ... 0.0231106 seconds.
[PassRunner]   running pass: ... 0.0209754 seconds.
[PassRunner]   running pass: ... 0.022072 seconds.
[PassRunner]   running pass: ... 0.0188815 seconds.
[PassRunner]   running pass: ... 0.0180909 seconds.
[PassRunner]   running pass: ... 0.0209709 seconds.
[PassRunner]   running pass: ... 0.026142 seconds.
[PassRunner]   running pass: ... 0.0396586 seconds.
[PassRunner]   running pass: ... 0.0267017 seconds.
[PassRunner]   running pass: ... 0.0203681 seconds.
[PassRunner]   running pass: ... 0.0207326 seconds.
[PassRunner]   running pass: ... 0.0405059 seconds.
[PassRunner]   running pass: ... 0.0212003 seconds.
[PassRunner]   running pass: ... 0.0166898 seconds.
[PassRunner]   running pass: ... 0.0206953 seconds.
[PassRunner]   running pass: ... 0.0197894 seconds.
[PassRunner]   running pass: ... 0.0374278 seconds.
[PassRunner]   running pass: ... 0.0247954 seconds.
[PassRunner]   running pass: ... 0.0515667 seconds.
[PassRunner]   running pass: ... 0.0264601 seconds.
[PassRunner]   running pass: ... 0.0181462 seconds.
[PassRunner]   running pass: ... 0.0408885 seconds.
[PassRunner]   running pass: ... 0.0152727 seconds.
[PassRunner]   running pass: ... 0.0202221 seconds.
[PassRunner]   running pass: ... 0.027613 seconds.
[PassRunner]   running pass: ... 0.0240307 seconds.
[PassRunner]   running pass: ... 0.0181611 seconds.
[PassRunner]   running pass: ... 0.0180616 seconds.
[PassRunner]   running pass: ... 0.0202812 seconds.
[PassRunner]   running pass: ... 0.0360416 seconds.
[PassRunner]   running pass: ... 0.0259614 seconds.
[PassRunner]   running pass: ... 0.0365728 seconds.
[PassRunner]   running pass: ... 0.0231639 seconds.
[PassRunner] nested passes took 0.880616 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0595677 seconds.
[PassRunner] nested passes took 0.0595677 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0298697 seconds.
[PassRunner]   running pass: ... 0.0200512 seconds.
[PassRunner]   running pass: ... 0.0203991 seconds.
[PassRunner]   running pass: ... 0.0160161 seconds.
[PassRunner]   running pass: ... 0.0158824 seconds.
[PassRunner]   running pass: ... 0.0200496 seconds.
[PassRunner]   running pass: ... 0.0177617 seconds.
[PassRunner]   running pass: ... 0.02163 seconds.
[PassRunner]   running pass: ... 0.0290169 seconds.
[PassRunner]   running pass: ... 0.0211181 seconds.
[PassRunner]   running pass: ... 0.0208955 seconds.
[PassRunner]   running pass: ... 0.015246 seconds.
[PassRunner]   running pass: ... 0.0278308 seconds.
[PassRunner]   running pass: ... 0.0223278 seconds.
[PassRunner]   running pass: ... 0.0192821 seconds.
[PassRunner]   running pass: ... 0.0197984 seconds.
[PassRunner]   running pass: ... 0.0179379 seconds.
[PassRunner]   running pass: ... 0.040059 seconds.
[PassRunner]   running pass: ... 0.0171738 seconds.
[PassRunner]   running pass: ... 0.0246565 seconds.
[PassRunner]   running pass: ... 0.0166231 seconds.
[PassRunner]   running pass: ... 0.0137774 seconds.
[PassRunner]   running pass: ... 0.0360955 seconds.
[PassRunner]   running pass: ... 0.0146599 seconds.
[PassRunner]   running pass: ... 0.0159697 seconds.
[PassRunner]   running pass: ... 0.0238667 seconds.
[PassRunner]   running pass: ... 0.0237321 seconds.
[PassRunner]   running pass: ... 0.0163186 seconds.
[PassRunner]   running pass: ... 0.0147491 seconds.
[PassRunner]   running pass: ... 0.0185136 seconds.
[PassRunner]   running pass: ... 0.0275318 seconds.
[PassRunner]   running pass: ... 0.0156484 seconds.
[PassRunner]   running pass: ... 0.0332244 seconds.
[PassRunner]   running pass: ... 0.0215875 seconds.
[PassRunner] nested passes took 0.7293 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0254981 seconds.
[PassRunner] nested passes took 0.0254981 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0309527 seconds.
[PassRunner]   running pass: ... 0.0180324 seconds.
[PassRunner]   running pass: ... 0.0174312 seconds.
[PassRunner]   running pass: ... 0.0146261 seconds.
[PassRunner]   running pass: ... 0.0154329 seconds.
[PassRunner]   running pass: ... 0.0183832 seconds.
[PassRunner]   running pass: ... 0.0142706 seconds.
[PassRunner]   running pass: ... 0.0203262 seconds.
[PassRunner]   running pass: ... 0.026383 seconds.
[PassRunner]   running pass: ... 0.0166744 seconds.
[PassRunner]   running pass: ... 0.015534 seconds.
[PassRunner]   running pass: ... 0.0153612 seconds.
[PassRunner]   running pass: ... 0.0228376 seconds.
[PassRunner]   running pass: ... 0.014819 seconds.
[PassRunner]   running pass: ... 0.0150473 seconds.
[PassRunner]   running pass: ... 0.0141482 seconds.
[PassRunner]   running pass: ... 0.015676 seconds.
[PassRunner]   running pass: ... 0.0319713 seconds.
[PassRunner]   running pass: ... 0.0162805 seconds.
[PassRunner]   running pass: ... 0.0326118 seconds.
[PassRunner]   running pass: ... 0.028265 seconds.
[PassRunner]   running pass: ... 0.0236768 seconds.
[PassRunner]   running pass: ... 0.0500519 seconds.
[PassRunner]   running pass: ... 0.0132142 seconds.
[PassRunner]   running pass: ... 0.0146473 seconds.
[PassRunner]   running pass: ... 0.0214 seconds.
[PassRunner]   running pass: ... 0.01811 seconds.
[PassRunner]   running pass: ... 0.0165703 seconds.
[PassRunner]   running pass: ... 0.0212446 seconds.
[PassRunner]   running pass: ... 0.0183839 seconds.
[PassRunner]   running pass: ... 0.0280242 seconds.
[PassRunner]   running pass: ... 0.0174223 seconds.
[PassRunner]   running pass: ... 0.0344857 seconds.
[PassRunner]   running pass: ... 0.0156614 seconds.
[PassRunner] nested passes took 0.707957 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0264902 seconds.
[PassRunner] nested passes took 0.0264902 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0523563 seconds.
[PassRunner]   running pass: ... 0.0360276 seconds.
[PassRunner]   running pass: ... 0.0248246 seconds.
[PassRunner]   running pass: ... 0.016362 seconds.
[PassRunner]   running pass: ... 0.0214725 seconds.
[PassRunner]   running pass: ... 0.0168296 seconds.
[PassRunner]   running pass: ... 0.0302815 seconds.
[PassRunner]   running pass: ... 0.0209372 seconds.
[PassRunner]   running pass: ... 0.0514769 seconds.
[PassRunner]   running pass: ... 0.0323928 seconds.
[PassRunner]   running pass: ... 0.0198559 seconds.
[PassRunner]   running pass: ... 0.0189887 seconds.
[PassRunner]   running pass: ... 0.103192 seconds.
[PassRunner]   running pass: ... 0.0222875 seconds.
[PassRunner]   running pass: ... 0.0163447 seconds.
[PassRunner]   running pass: ... 0.0243308 seconds.
[PassRunner]   running pass: ... 0.0286415 seconds.
[PassRunner]   running pass: ... 0.0539184 seconds.
[PassRunner]   running pass: ... 0.0333144 seconds.
[PassRunner]   running pass: ... 0.0956295 seconds.
[PassRunner]   running pass: ... 0.0217844 seconds.
[PassRunner]   running pass: ... 0.0157893 seconds.
[PassRunner]   running pass: ... 0.0505709 seconds.
[PassRunner]   running pass: ... 0.0147329 seconds.
[PassRunner]   running pass: ... 0.0177173 seconds.
[PassRunner]   running pass: ... 0.0244178 seconds.
[PassRunner]   running pass: ... 0.0192244 seconds.
[PassRunner]   running pass: ... 0.0237411 seconds.
[PassRunner]   running pass: ... 0.0164873 seconds.
[PassRunner]   running pass: ... 0.0194539 seconds.
[PassRunner]   running pass: ... 0.0505015 seconds.
[PassRunner]   running pass: ... 0.0466036 seconds.
[PassRunner]   running pass: ... 0.0407396 seconds.
[PassRunner]   running pass: ... 0.0320271 seconds.
[PassRunner] nested passes took 1.11326 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0419801 seconds.
[PassRunner] nested passes took 0.0419801 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0372772 seconds.
[PassRunner]   running pass: ... 0.0151516 seconds.
[PassRunner]   running pass: ... 0.0165771 seconds.
[PassRunner]   running pass: ... 0.0159438 seconds.
[PassRunner]   running pass: ... 0.0142307 seconds.
[PassRunner]   running pass: ... 0.0175623 seconds.
[PassRunner]   running pass: ... 0.0166968 seconds.
[PassRunner]   running pass: ... 0.0207002 seconds.
[PassRunner]   running pass: ... 0.0314123 seconds.
[PassRunner]   running pass: ... 0.019196 seconds.
[PassRunner]   running pass: ... 0.0171667 seconds.
[PassRunner]   running pass: ... 0.0151753 seconds.
[PassRunner]   running pass: ... 0.0258668 seconds.
[PassRunner]   running pass: ... 0.0155709 seconds.
[PassRunner]   running pass: ... 0.0132535 seconds.
[PassRunner]   running pass: ... 0.0161588 seconds.
[PassRunner]   running pass: ... 0.0156039 seconds.
[PassRunner]   running pass: ... 0.0389224 seconds.
[PassRunner]   running pass: ... 0.0199706 seconds.
[PassRunner]   running pass: ... 0.0221922 seconds.
[PassRunner]   running pass: ... 0.0154385 seconds.
[PassRunner]   running pass: ... 0.0123925 seconds.
[PassRunner]   running pass: ... 0.0301717 seconds.
[PassRunner]   running pass: ... 0.0149454 seconds.
[PassRunner]   running pass: ... 0.0155887 seconds.
[PassRunner]   running pass: ... 0.0209547 seconds.
[PassRunner]   running pass: ... 0.0173751 seconds.
[PassRunner]   running pass: ... 0.015576 seconds.
[PassRunner]   running pass: ... 0.014213 seconds.
[PassRunner]   running pass: ... 0.0169096 seconds.
[PassRunner]   running pass: ... 0.023751 seconds.
[PassRunner]   running pass: ... 0.0137465 seconds.
[PassRunner]   running pass: ... 0.0291481 seconds.
[PassRunner]   running pass: ... 0.0155856 seconds.
[PassRunner] nested passes took 0.660425 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0370396 seconds.
[PassRunner] nested passes took 0.0370396 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0261671 seconds.
[PassRunner]   running pass: ... 0.0141295 seconds.
[PassRunner]   running pass: ... 0.0157526 seconds.
[PassRunner]   running pass: ... 0.0140224 seconds.
[PassRunner]   running pass: ... 0.0136531 seconds.
[PassRunner]   running pass: ... 0.0142912 seconds.
[PassRunner]   running pass: ... 0.0144421 seconds.
[PassRunner]   running pass: ... 0.0179405 seconds.
[PassRunner]   running pass: ... 0.0249444 seconds.
[PassRunner]   running pass: ... 0.0160729 seconds.
[PassRunner]   running pass: ... 0.0136482 seconds.
[PassRunner]   running pass: ... 0.0135305 seconds.
[PassRunner]   running pass: ... 0.0194291 seconds.
[PassRunner]   running pass: ... 0.0140151 seconds.
[PassRunner]   running pass: ... 0.011877 seconds.
[PassRunner]   running pass: ... 0.0134445 seconds.
[PassRunner]   running pass: ... 0.0139615 seconds.
[PassRunner]   running pass: ... 0.0308012 seconds.
[PassRunner]   running pass: ... 0.0153702 seconds.
[PassRunner]   running pass: ... 0.0215038 seconds.
[PassRunner]   running pass: ... 0.0175589 seconds.
[PassRunner]   running pass: ... 0.0132385 seconds.
[PassRunner]   running pass: ... 0.032188 seconds.
[PassRunner]   running pass: ... 0.0142667 seconds.
[PassRunner]   running pass: ... 0.0175909 seconds.
[PassRunner]   running pass: ... 0.0213217 seconds.
[PassRunner]   running pass: ... 0.0195859 seconds.
[PassRunner]   running pass: ... 0.0159211 seconds.
[PassRunner]   running pass: ... 0.0156189 seconds.
[PassRunner]   running pass: ... 0.0204655 seconds.
[PassRunner]   running pass: ... 0.0298748 seconds.
[PassRunner]   running pass: ... 0.0153947 seconds.
[PassRunner]   running pass: ... 0.0313697 seconds.
[PassRunner]   running pass: ... 0.0150741 seconds.
[PassRunner] nested passes took 0.618466 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.024702 seconds.
[PassRunner] nested passes took 0.024702 seconds.
50.515 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: inlining-optimizing...                [PassRunner] running nested passes
[PassRunner]   running pass: ... 0.636732 seconds.
[PassRunner] nested passes took 0.636732 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.389033 seconds.
[PassRunner] nested passes took 0.389033 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 2.21304 seconds.
[PassRunner]   running pass: ... 13.6992 seconds.
[PassRunner]   running pass: ... 17.1583 seconds.
[PassRunner]   running pass: ... 3.07614 seconds.
[PassRunner]   running pass: ... 0.440289 seconds.
[PassRunner]   running pass: ... 2.09599 seconds.
[PassRunner]   running pass: ... 0.42454 seconds.
[PassRunner]   running pass: ... 2.96473 seconds.
[PassRunner]   running pass: ... 0.563452 seconds.
[PassRunner]   running pass: ... 10.521 seconds.
[PassRunner]   running pass: ... 6.77866 seconds.
[PassRunner]   running pass: ... 1.02083 seconds.
[PassRunner]   running pass: ... 0.0212455 seconds.
[PassRunner]   running pass: ... 35.5445 seconds.
[PassRunner]   running pass: ... 6.12793 seconds.
[PassRunner]   running pass: ... 0.806283 seconds.
[PassRunner]   running pass: ... 1.73748 seconds.
[PassRunner]   running pass: ... 29.7858 seconds.
[PassRunner]   running pass: ... 47.893 seconds.
[PassRunner]   running pass: ... 5.83508 seconds.
[PassRunner]   running pass: ... 28.1647 seconds.
[PassRunner]   running pass: ... 4.60437 seconds.
[PassRunner]   running pass: ... 0.550172 seconds.
[PassRunner]   running pass: ... 5.70146 seconds.
[PassRunner]   running pass: ... 0.512523 seconds.
[PassRunner]   running pass: ... 4.37879 seconds.
[PassRunner]   running pass: ... 2.01511 seconds.
[PassRunner]   running pass: ... 5.55456 seconds.
[PassRunner]   running pass: ... 1.70522 seconds.
[PassRunner]   running pass: ... 0.401454 seconds.
[PassRunner]   running pass: ... 2.73343 seconds.
[PassRunner]   running pass: ... 9.46809 seconds.
[PassRunner]   running pass: ... 2.51588 seconds.
[PassRunner]   running pass: ... 4.32265 seconds.
[PassRunner]   running pass: ... 4.35982 seconds.
[PassRunner] nested passes took 265.696 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.589854 seconds.
[PassRunner] nested passes took 0.589854 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.34241 seconds.
[PassRunner] nested passes took 0.34241 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 1.39784 seconds.
[PassRunner]   running pass: ... 10.6635 seconds.
[PassRunner]   running pass: ... 10.5318 seconds.
[PassRunner]   running pass: ... 2.60078 seconds.
[PassRunner]   running pass: ... 0.374479 seconds.
[PassRunner]   running pass: ... 1.66155 seconds.
[PassRunner]   running pass: ... 0.352964 seconds.
[PassRunner]   running pass: ... 2.2783 seconds.
[PassRunner]   running pass: ... 0.449351 seconds.
[PassRunner]   running pass: ... 8.64434 seconds.
[PassRunner]   running pass: ... 5.93345 seconds.
[PassRunner]   running pass: ... 0.842454 seconds.
[PassRunner]   running pass: ... 0.0146555 seconds.
[PassRunner]   running pass: ... 25.3974 seconds.
[PassRunner]   running pass: ... 5.34119 seconds.
[PassRunner]   running pass: ... 0.586503 seconds.
[PassRunner]   running pass: ... 1.62636 seconds.
[PassRunner]   running pass: ... 17.2516 seconds.
[PassRunner]   running pass: ... 60.7444 seconds.
[PassRunner]   running pass: ... 5.02817 seconds.
[PassRunner]   running pass: ... 105.212 seconds.
[PassRunner]   running pass: ... 8.60823 seconds.
[PassRunner]   running pass: ... 0.486923 seconds.
[PassRunner]   running pass: ... 5.05528 seconds.
[PassRunner]   running pass: ... 0.446056 seconds.
[PassRunner]   running pass: ... 3.89265 seconds.
[PassRunner]   running pass: ... 1.90294 seconds.
[PassRunner]   running pass: ... 2.47377 seconds.
[PassRunner]   running pass: ... 1.4725 seconds.
[PassRunner]   running pass: ... 0.33898 seconds.
[PassRunner]   running pass: ... 2.5289 seconds.
[PassRunner]   running pass: ... 8.51294 seconds.
[PassRunner]   running pass: ... 2.17671 seconds.
[PassRunner]   running pass: ... 3.92906 seconds.
[PassRunner]   running pass: ... 3.99849 seconds.
[PassRunner] nested passes took 312.757 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.568733 seconds.
[PassRunner] nested passes took 0.568733 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.314172 seconds.
[PassRunner] nested passes took 0.314172 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.663436 seconds.
[PassRunner]   running pass: ... 5.83749 seconds.
[PassRunner]   running pass: ... 8.44294 seconds.
[PassRunner]   running pass: ... 1.69516 seconds.
[PassRunner]   running pass: ... 0.207035 seconds.
[PassRunner]   running pass: ... 0.86278 seconds.
[PassRunner]   running pass: ... 0.205163 seconds.
[PassRunner]   running pass: ... 1.14787 seconds.
[PassRunner]   running pass: ... 0.256945 seconds.
[PassRunner]   running pass: ... 5.46645 seconds.
[PassRunner]   running pass: ... 3.58852 seconds.
[PassRunner]   running pass: ... 0.459313 seconds.
[PassRunner]   running pass: ... 0.0126543 seconds.
[PassRunner]   running pass: ... 14.003 seconds.
[PassRunner]   running pass: ... 3.44685 seconds.
[PassRunner]   running pass: ... 0.338234 seconds.
[PassRunner]   running pass: ... 0.815953 seconds.
[PassRunner]   running pass: ... 12.9288 seconds.
[PassRunner]   running pass: ... 13.3789 seconds.
[PassRunner]   running pass: ... 3.50237 seconds.
[PassRunner]   running pass: ... 15.8937 seconds.
[PassRunner]   running pass: ... 2.45462 seconds.
[PassRunner]   running pass: ... 0.236645 seconds.
[PassRunner]   running pass: ... 3.06658 seconds.
[PassRunner]   running pass: ... 0.246149 seconds.
[PassRunner]   running pass: ... 2.43442 seconds.
[PassRunner]   running pass: ... 1.41466 seconds.
[PassRunner]   running pass: ... 1.54243 seconds.
[PassRunner]   running pass: ... 0.799233 seconds.
[PassRunner]   running pass: ... 0.223912 seconds.
[PassRunner]   running pass: ... 1.78811 seconds.
[PassRunner]   running pass: ... 5.45827 seconds.
[PassRunner]   running pass: ... 1.11822 seconds.
[PassRunner]   running pass: ... 2.43132 seconds.
[PassRunner]   running pass: ... 2.46319 seconds.
[PassRunner] nested passes took 118.831 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.56171 seconds.
[PassRunner] nested passes took 0.56171 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.302397 seconds.
[PassRunner] nested passes took 0.302397 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0713248 seconds.
[PassRunner]   running pass: ... 0.613376 seconds.
[PassRunner]   running pass: ... 0.523625 seconds.
[PassRunner]   running pass: ... 0.11542 seconds.
[PassRunner]   running pass: ... 0.0247965 seconds.
[PassRunner]   running pass: ... 0.0795396 seconds.
[PassRunner]   running pass: ... 0.0248006 seconds.
[PassRunner]   running pass: ... 0.0941499 seconds.
[PassRunner]   running pass: ... 0.0327527 seconds.
[PassRunner]   running pass: ... 0.594453 seconds.
[PassRunner]   running pass: ... 0.3938 seconds.
[PassRunner]   running pass: ... 0.0410054 seconds.
[PassRunner]   running pass: ... 0.0120073 seconds.
[PassRunner]   running pass: ... 1.12825 seconds.
[PassRunner]   running pass: ... 0.185019 seconds.
[PassRunner]   running pass: ... 0.0320213 seconds.
[PassRunner]   running pass: ... 0.0807849 seconds.
[PassRunner]   running pass: ... 1.80504 seconds.
[PassRunner]   running pass: ... 1.35542 seconds.
[PassRunner]   running pass: ... 0.214567 seconds.
[PassRunner]   running pass: ... 0.973082 seconds.
[PassRunner]   running pass: ... 0.143618 seconds.
[PassRunner]   running pass: ... 0.0268992 seconds.
[PassRunner]   running pass: ... 0.253225 seconds.
[PassRunner]   running pass: ... 0.0272003 seconds.
[PassRunner]   running pass: ... 0.144474 seconds.
[PassRunner]   running pass: ... 0.086696 seconds.
[PassRunner]   running pass: ... 0.119816 seconds.
[PassRunner]   running pass: ... 0.0879698 seconds.
[PassRunner]   running pass: ... 0.0249232 seconds.
[PassRunner]   running pass: ... 0.1237 seconds.
[PassRunner]   running pass: ... 0.61821 seconds.
[PassRunner]   running pass: ... 0.0955248 seconds.
[PassRunner]   running pass: ... 0.216018 seconds.
[PassRunner]   running pass: ... 0.146625 seconds.
[PassRunner] nested passes took 10.5101 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.568525 seconds.
[PassRunner] nested passes took 0.568525 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.322009 seconds.
[PassRunner] nested passes took 0.322009 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.0284486 seconds.
[PassRunner]   running pass: ... 0.186771 seconds.
[PassRunner]   running pass: ... 0.0942168 seconds.
[PassRunner]   running pass: ... 0.0526964 seconds.
[PassRunner]   running pass: ... 0.0198554 seconds.
[PassRunner]   running pass: ... 0.0391286 seconds.
[PassRunner]   running pass: ... 0.0191448 seconds.
[PassRunner]   running pass: ... 0.123312 seconds.
[PassRunner]   running pass: ... 0.0727168 seconds.
[PassRunner]   running pass: ... 0.18469 seconds.
[PassRunner]   running pass: ... 0.148963 seconds.
[PassRunner]   running pass: ... 0.0306201 seconds.
[PassRunner]   running pass: ... 0.0121762 seconds.
[PassRunner]   running pass: ... 1.38286 seconds.
[PassRunner]   running pass: ... 0.131004 seconds.
[PassRunner]   running pass: ... 0.0210166 seconds.
[PassRunner]   running pass: ... 0.0349784 seconds.
[PassRunner]   running pass: ... 0.182416 seconds.
[PassRunner]   running pass: ... 0.153681 seconds.
[PassRunner]   running pass: ... 0.094972 seconds.
[PassRunner]   running pass: ... 0.360894 seconds.
[PassRunner]   running pass: ... 0.0569729 seconds.
[PassRunner]   running pass: ... 0.0184198 seconds.
[PassRunner]   running pass: ... 0.0876896 seconds.
[PassRunner]   running pass: ... 0.0183137 seconds.
[PassRunner]   running pass: ... 0.057262 seconds.
[PassRunner]   running pass: ... 0.0337452 seconds.
[PassRunner]   running pass: ... 0.039321 seconds.
[PassRunner]   running pass: ... 0.0350629 seconds.
[PassRunner]   running pass: ... 0.0168354 seconds.
[PassRunner]   running pass: ... 0.0404384 seconds.
[PassRunner]   running pass: ... 0.133657 seconds.
[PassRunner]   running pass: ... 0.0486878 seconds.
[PassRunner]   running pass: ... 0.0686102 seconds.
[PassRunner]   running pass: ... 0.0574554 seconds.
[PassRunner] nested passes took 4.08703 seconds.
717.431 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: duplicate-function-elimination...     [PassRunner] running nested passes
[PassRunner]   running pass: ... 0.448872 seconds.
[PassRunner] nested passes took 0.448872 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.353031 seconds.
[PassRunner] nested passes took 0.353031 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.447099 seconds.
[PassRunner] nested passes took 0.447099 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.275387 seconds.
[PassRunner] nested passes took 0.275387 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.439453 seconds.
[PassRunner] nested passes took 0.439453 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.264691 seconds.
[PassRunner] nested passes took 0.264691 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.44542 seconds.
[PassRunner] nested passes took 0.44542 seconds.
2.79146 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: duplicate-import-elimination...       0.0003021 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: simplify-globals-optimizing...        [PassRunner] running nested passes
[PassRunner]   running pass: ... 0.754067 seconds.
[PassRunner] nested passes took 0.754067 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 0.279065 seconds.
[PassRunner] nested passes took 0.279065 seconds.
[PassRunner] running nested passes
[PassRunner]   running pass: ... 3.88915 seconds.
[PassRunner] nested passes took 3.88915 seconds.
4.93018 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: remove-unused-module-elements...      0.686872 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: reorder-globals...                    0.0036436 seconds.
[PassRunner]   (validating)
[PassRunner]   running pass: directize...                          [PassRunner] running nested passes
[PassRunner]   running pass: ... 0.271746 seconds.
[PassRunner] nested passes took 0.271746 seconds.
0.345946 seconds.
[PassRunner]   (validating)
[PassRunner] passes took 960.701 seconds.
[PassRunner] (final validation)
[PassRunner] running passes
[PassRunner] passes took 0 seconds.
[PassRunner] (final validation)
writing...
writing binary to bin\addonWebAssembly.wasm
Opening 'bin\addonWebAssembly.wasm'
shared:DEBUG: successfully executed 'C:/dev/trame-vtklocal/dev/emsdk/upstream\bin\wasm-opt' --strip-target-features --post-emscripten -O3 --low-memory-unused --zero-filled-memory --pass-arg=directize-initial-contents-immutable --no-stack-ir --debug 'bin\addonWebAssembly.wasm' -o 'bin\addonWebAssembly.wasm' --mvp-features --enable-bulk-memory --enable-bulk-memory-opt --enable-call-indirect-overlong --enable-exception-handling --enable-multivalue --enable-mutable-globals --enable-nontrapping-float-to-int --enable-reference-types --enable-sign-ext
building:DEBUG: saving intermediate file C:\Users\JASWAN~1.PAN\AppData\Local\Temp\emscripten_temp\emcc-05-wasm-opt.wasm
building:DEBUG: saving intermediate file C:\Users\JASWAN~1.PAN\AppData\Local\Temp\emscripten_temp\emcc-06-byn.wasm
profiler:DEBUG: block "wasm_opt" took 973.052 seconds

jspanchu avatar Jul 09 '25 18:07 jspanchu

Looks like most of the time is taken up in inlining-optimizing, which is not surprising for a large file with many inlining and followup opportunities. But I'm afraid it doesn't help explain why Windows is slower.

Perhaps running the Windows system profiler can find something interesting? E.g. if locks are very high in the profile, perhaps using mimalloc would help - I believe we only do so for Linux atm.

kripken avatar Jul 09 '25 20:07 kripken

Is there a way to skip wasm-opt and still keep -O3? I want to run wasm-opt on an unoptimized .wasm file manually through a profiler instead of using emcc.

jspanchu avatar Jul 09 '25 20:07 jspanchu

Hmm, there is no good way, but you can hack the code like this, to remove the part that calls wasm-opt -O3

diff --git a/tools/link.py b/tools/link.py
index 0dc2dba0d1..9b8bcaa261 100644
--- a/tools/link.py
+++ b/tools/link.py
@@ -2301,12 +2301,6 @@ def phase_binaryen(target, options, wasm_target):
     # that. see https://github.com/emscripten-core/emscripten/issues/15269
     if settings.GENERATE_DWARF:
       diagnostics.warning('limited-postlink-optimizations', 'running limited binaryen optimizations because DWARF info requested (or indirectly required)')
-    with ToolchainProfiler.profile_block('wasm_opt'):
-      building.run_wasm_opt(wasm_target,
-                            wasm_target,
-                            args=passes,
-                            debug=intermediate_debug_info)
-      building.save_intermediate(wasm_target, 'byn.wasm')
 
   if settings.EVAL_CTORS:
     with ToolchainProfiler.profile_block('eval_ctors'):

kripken avatar Jul 09 '25 20:07 kripken