<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/135431>135431</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Assertion failed when trying to run `wasm-ld`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
adamscott
</td>
</tr>
</table>
<pre>
It seems that there's an issue linking some projects with `wasm-ld` with ThinLTO enabled.
See https://github.com/godotengine/godot/issues/104497#issuecomment-2790451350 and https://github.com/emscripten-core/emscripten/issues/10831 for examples.
It seems that we cannot build Godot with ThinLTO enabled for the Web platform, as some functions signatures appear to mismatch. It doesn't happen with `lto=full`.
The following assertion hit when running a Debug build with assertions on on `llvmorg-20.1.2`. The same issue happened, as I recall, when running on the latest version of `main`.
```
Assertion failed: (llvm::isUIntN(BitWidth, val) && "Value is not an N-bit unsigned value"), function APInt, file APInt.h, line 128.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Running pass "require<globals-aa>,function(invalidate<aa>),require<profile-summary>,cgscc(devirt<4>(inline,function-attrs<skip-non-recursive-function-attrs>,openmp-opt-cgscc,function<eager-inv;no-rerun>(sroa<modify-cfg>,early-cse<memssa>,speculative-execution<only-if-divergent-target>,jump-threading,correlated-propagation,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,instcombine<max-iterations=1;no-verify-fixpoint>,aggressive-instcombine,libcalls-shrinkwrap,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,reassociate,constraint-elimination,loop-mssa(loop-instsimplify,loop-simplifycfg,licm<no-allowspeculation>,loop-rotate<header-duplication;no-prepare-for-lto>,licm<allowspeculation>,simple-loop-unswitch<no-nontrivial;trivial>),simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,instcombine<max-iterations=1;no-verify-fixpoint>,loop(loop-idiom,indvars,extra-simple-loop-unswitch-passes,loop-deletion,loop-unroll-full),sroa<modify-cfg>,vector-combine,mldst-motion<no-split-footer-bb>,gvn<>,sccp,bdce,instcombine<max-iterations=1;no-verify-fixpoint>,jump-threading,correlated-propagation,adce,memcpyopt,dse,move-auto-init,loop-mssa(licm<allowspeculation>),coro-elide,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,instcombine<max-iterations=1;no-verify-fixpoint>),function-attrs,function(require<should-not-run-function-passes>),coro-split,coro-annotation-elide)),function(invalidate<should-not-run-function-passes>),cgscc(devirt<4>())" on module "bin/obj/core/libcore.web.template_debug.wasm32.nothreads.a(scu_core_math.gen.web.template_debug.wasm32.nothreads.o at 11718598)"
1. Running pass "cgscc(devirt<4>(inline,function-attrs<skip-non-recursive-function-attrs>,openmp-opt-cgscc,function<eager-inv;no-rerun>(sroa<modify-cfg>,early-cse<memssa>,speculative-execution<only-if-divergent-target>,jump-threading,correlated-propagation,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,instcombine<max-iterations=1;no-verify-fixpoint>,aggressive-instcombine,libcalls-shrinkwrap,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,reassociate,constraint-elimination,loop-mssa(loop-instsimplify,loop-simplifycfg,licm<no-allowspeculation>,loop-rotate<header-duplication;no-prepare-for-lto>,licm<allowspeculation>,simple-loop-unswitch<no-nontrivial;trivial>),simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,instcombine<max-iterations=1;no-verify-fixpoint>,loop(loop-idiom,indvars,extra-simple-loop-unswitch-passes,loop-deletion,loop-unroll-full),sroa<modify-cfg>,vector-combine,mldst-motion<no-split-footer-bb>,gvn<>,sccp,bdce,instcombine<max-iterations=1;no-verify-fixpoint>,jump-threading,correlated-propagation,adce,memcpyopt,dse,move-auto-init,loop-mssa(licm<allowspeculation>),coro-elide,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,instcombine<max-iterations=1;no-verify-fixpoint>),function-attrs,function(require<should-not-run-function-passes>),coro-split,coro-annotation-elide))" on module "bin/obj/core/libcore.web.template_debug.wasm32.nothreads.a(scu_core_math.gen.web.template_debug.wasm32.nothreads.o at 11718598)"
```
(see the rest of the huge crash backtrace here: [wasmldassert.txt](https://github.com/user-attachments/files/19713470/wasmldassert.txt))
It does run when assertions are off, but then, `wasm-ld` complains that some signatures are mismatched (see https://github.com/godotengine/godot/issues/104497#issuecomment-2790451350). I wonder if it's linked.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWVtv5CgW_jXkBVGycV0f6qFS6awijWZH2707jy0MxzYdDF44rkr-_epg59q9va0djWY0KilSCgzn9n3AgaNSsq0H2LPVNVvdXKkRuxD3yqg-6YB4VQfzuL9DngD6xLFTyLGDCExuElee25RG4M76e-tbnkIPfIjhC2hM_Gyx42xdnFXqhTNsXUxdnzrrf_r0dw5e1Q7MghUHVhw-AvAOcUisOjB5y-Rta7Eb64UOPTWCCQi-tR6eWkzeZvWJyduyWC53Gyar3KND34NHITe7Yrkqq1XBlTffEw990tEOCF7oQO696nmrZ1uVvAmRw4PqBwdpNv9tjM7AtfI-IK9H6wz_G9n7Te-zLOyA_wo1H5zCJsSeySNXaQpnM3qNNvjECSqFY4TE1TCAihwD723qFepuwe-QmwDJM7lB3tEI_wyBw8Cqm2Z0jq2L2eJPHfAmOBfOBJ1KCSLp4Z1Ffu7A8zh6nz_xG6jHdnYli3wenXjw9Ec63KkPsRWyWJQLSXo4qUiqh5kmk1FgZvfueAStnKPmG4XB54g4hZCQnyAmsis0pKVX1r_4wNbF_FccDs8eNMo6MKw6cCa3ZBZhXh1s-uedx5-Z3F5b_NUa7EjzSTkmd5zJNZNrzqT8l3IjWcwJPuX5z6K2yEefV4qh8SMwKZnc0fQnePjhlzuPucc6mFqLrMBZD7yUWzL5l58-HD5-4Gmse4tccQprhCFEJCy_w8_sxfRPzAvsNS0zva3XbjSQY6ejSh2vlb7HqDSQ7o-o9D03Yz-QiuJAMdz9Yw75oFIi5yP8e7QRWHVsXaiVS0IpVn1g8vjkKJNb60_KWaOQxs3fKRgvk4cYKAwijX2v4uMkQbdJaya3Bk42IquOy9y_td7lVf2sQijEmFh1TPd2ED54EUGPMdkTiPdjSHAYwPeDCAOKWceLtdURVAtRWH9i1bUPIkIc_aQ4xaBYdeyDsc2j0E07iQMV3aPQiRzpoU9pjkAaQI9OIZkBD6DHWUHw7lHYRhh7gtjSvoMqtoDTrC9jPwjsIihjfUthCDECcdsQkoNq1RTWY7L94GzzmA051sGPSVifMM9OXXCGVTfl5EUT4llFI9LZou6EDt6w6npuReVbEBiE1QQ2jZ-_YBAuhPuReu8BBmoR5WhIF2xCQVtn8Fnvm34XlEkiYYiQBO0BWado1OiQ_Jq0WH__XsJT1EDULuj73DU7Oomoo_K6mwU8Dx79EMFYjbRLzjiTSB36mthSHXv1ICxCzOFLL6E5QSTZjX0YgvUzCqptI6TMoNdS5NHZmvagJFIXrb8_RzUweURlHXWDs_0Fmf-NTASVUtCWtgRiuE8YlfUoKIDWPzGcfBJ5Qclt_p1NmXU-fX8dbMJH96w6-iAUHVXPazBMa3iaEgNOm1EHykAUZhyc1fMosn6IMKgIBI7IZ-GHF9HflputgIyCGP0E0mSHDx6jPVnlWHX9_GveAi9M-f3WMPn5TBxj6Vw8Wm9OKibatR8wKvEt2AQdbnRMTmQx4OA1H0cfg3MiJ0cTht8-Fk6gMUTxsnX0ziQUfZiPgey6syiaEBCiqOtpXnuirzOrtKbtpTYaflssfvxUUZOuHno9PIaBUhSTck84gVAjUcxbfL86v7M2dpO6QIvbwB9M-t_K-D8t3XdfJ0RvkrCXZCt1YXRG-IAijv4lQ5pp_wayzNCnRr6hZFueoNy91fs-1_tRTf8l0XuSLynD74MZHVDOWVu6YoX6C5O38-WLTuUQYXGGeoHQ070IPhu6hSzoNlnJhQ8T-9OC6Jr0-JkmfO4VdosW_A_NDFwhL8tNuV3tJuMkKw7lt_LiS-56yV0vuetfEplL7nrJXS-56yV3veSuf4Xc9c-dW75-rybRML3WRkjIQ5N_d2P71fMtzyWX6sDZ6po0OTM9wC_wAdnqhsntd56OxwSRQFC668FjYvK2sW6qZuw2ZbXcFEzefiV2iudTbcMESDyOfnqof_X8ryLw0DRMHnk95uIQLdx3ZR8dKFjWz9WRXNd4Xc2I8FzHAMPnwPx-xSAmdwt-x8_BG4jcNpxotUm5jAVmcWX2ldlVO3UF-3KzXC6LcrNcXXV7BdIoVW4atVvXW5C7YrnerdbrVbmSy41eXdm9LOSqWJalLAopV4tyt6xArZp6Wawro9dsWUCvrFs4d-oXIbZX2cR9Wa2WVXnlVA0u5WKclB7OU92EqLO6uYr7_Ppfj21iy8LZhOlFDFp0sH9fApnQwvhIVxkMGcA3yFyN0e3__7LDbPZpL_8TAAD__3Sy5kY">