-
Notifications
You must be signed in to change notification settings - Fork 3.4k
Description
okay. I will dump a lot of information. bear with me. I had three difficulties, but only the last one matters. you can skip to the end for the real issue, the rest until then is only whining.
I wrote a code generator that generates one function that spans around 330110 lines (really, hundreds of thousands of lines). I remember it compiling once with Emscripten, but I don't remember the flags anymore. this code is non-critical, it is merely the fruits of my ongoing bachelor thesis. sounds a little absurd, but honestly this is so easy that this is how it will be for now.
version and system
$ uname -a
MINGW64_NT-10.0-19045 DESKTOP-QIBT7ND 3.6.4-23a25d49.x86_64 2025-07-16 16:15 UTC x86_64 Msys
$ emcc -v
emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 4.0.14-git (96371ed7888fc78c0
40179f4d4faa82a6a07a116)
clang version 22.0.0git
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:/msys64/clang64/opt/emscripten-llvm/bin
problem 1: function created with EM_JS
doesn't have external linkage when optimizations enabled
there_she_is.c
contains the following:
#define EM_JS2(...) EM_JS(__VA_ARGS__)
EM_JS2(void, there_she_is_render_html5, (__externref_t CanvasRenderingContext2D, int frame), {
// one switch..case that spans 300 thousand lines
});
The function-like macro EM_JS2 serves the purpose as discussed in #23690
the following on there_she_is.h
:
void there_she_is_render_html5(__externref_t CanvasRenderingContext2D, int frame);
and on main.c
:
#include "there_she_is.h"
EM_JS(__externref_t, get_canvas, (), {
window.censored = document.getElementById('canvas').getContext('2d');
});
static void iter(void) {
there_she_is_render_html5(get_canvas(), frame_i);
}
let's compile this. I have omitted all the other parts. the real files are linked in the bottom.
$ emcc -v -ferror-limit=1 -std=c18 -DFEAT_HTML5 -mreference-types main.c there_she_is.c -sALLOW_MEMORY_GROWTH \
--use-port=sdl2 \
-o index.html --shell-file=shell.html
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -target wasm32-unknown-emscripten -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=C:/msys64/clang64/lib/emscripten/cache/sysroot -DEMSCRIPTEN -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -ferror-limit=1 -std=c18 -DFEAT_HTML5 -mreference-types -c main.c -o C:/msys64/tmp/emscripten_temp_prxuolmz/main_0.o
clang version 22.0.0git
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:/msys64/clang64/opt/emscripten-llvm/bin
(in-process)
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name main.c -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +reference-types -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=D:/Projetos/molho -v -fcoverage-compilation-dir=D:/Projetos/molho -resource-dir C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22 -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -D EMSCRIPTEN -D FEAT_HTML5 -isysroot C:/msys64/clang64/lib/emscripten/cache/sysroot -internal-isystem C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include -std=c18 -ferror-limit 1 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fignore-exceptions -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o C:/msys64/tmp/emscripten_temp_prxuolmz/main_0.o -x c main.c
clang -cc1 version 22.0.0git based upon LLVM 22.0.0git default target x86_64-w64-windows-gnu
ignoring nonexistent directory "C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/fakesdl
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/compat
C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include
C:/msys64/clang64/lib/emscripten/cache/sysroot/include
End of search list.
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -target wasm32-unknown-emscripten -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=C:/msys64/clang64/lib/emscripten/cache/sysroot -DEMSCRIPTEN -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -ferror-limit=1 -std=c18 -DFEAT_HTML5 -mreference-types -c there_she_is.c -o C:/msys64/tmp/emscripten_temp_prxuolmz/there_she_is_1.o
clang version 22.0.0git
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:/msys64/clang64/opt/emscripten-llvm/bin
(in-process)
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name there_she_is.c -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +reference-types -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=D:/Projetos/molho -v -fcoverage-compilation-dir=D:/Projetos/molho -resource-dir C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22 -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -D EMSCRIPTEN -D FEAT_HTML5 -isysroot C:/msys64/clang64/lib/emscripten/cache/sysroot -internal-isystem C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include -std=c18 -ferror-limit 1 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fignore-exceptions -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o C:/msys64/tmp/emscripten_temp_prxuolmz/there_she_is_1.o -x c there_she_is.c
clang -cc1 version 22.0.0git based upon LLVM 22.0.0git default target x86_64-w64-windows-gnu
ignoring nonexistent directory "C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/fakesdl
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/compat
C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include
C:/msys64/clang64/lib/emscripten/cache/sysroot/include
End of search list.
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" --version
"C:/msys64/clang64/opt/emscripten-llvm/bin/wasm-ld.exe" -o index.wasm C:/msys64/tmp/emscripten_temp_prxuolmz/main_0.o C:/msys64/tmp/emscripten_temp_prxuolmz/there_she_is_1.o -LC:/msys64/clang64/lib/emscripten/cache/sysroot/lib/wasm32-emscripten -LC:/msys64/clang64/lib/emscripten/src/lib C:/msys64/clang64/lib/emscripten/cache/sysroot/lib/wasm32-emscripten/libSDL2.a -lGL-getprocaddr -lal -lhtml5 -lstubs-debug -lnoexit -lc-debug -ldlmalloc-debug -lcompiler_rt -lc++-debug-noexcept -lc++abi-debug-noexcept -lsockets -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr C:/msys64/tmp/tmp2pbpysablibemscripten_js_symbols.so --strip-debug --export=emscripten_stack_get_end --export=emscripten_stack_get_free --export=emscripten_stack_get_base --export=emscripten_stack_get_current --export=emscripten_stack_init --export=_emscripten_stack_alloc --export=__wasm_call_ctors --export=_emscripten_stack_restore --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=main --export-if-defined=__main_argc_argv --export-if-defined=fflush --export-table -z stack-size=65536 --max-memory=2147483648 --initial-heap=16777216 --no-entry --stack-first --table-base=1
"C:/msys64/clang64/opt/emscripten-llvm/bin/llvm-objcopy.exe" index.wasm index.wasm '--remove-section=.debug*' --remove-section=producers --remove-section=name
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/compiler.mjs -
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/preprocessor.mjs - shell.html
it works. I can visually attest it works by running $ emrun.py index.html
let's enable optimizations (-Oz -flto
):
$ emcc -v -ferror-limit=1 -std=c18 -DFEAT_HTML5 -Oz -flto -mreference-types main.c there_she_is.c -sALLOW_MEMORY_GROWTH \
--use-port=sdl2 \
-o index.html --shell-file=shell.html
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -target wasm32-unknown-emscripten -fignore-exceptions --sysroot=C:/msys64/clang64/lib/emscripten/cache/sysroot -DEMSCRIPTEN -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -ferror-limit=1 -std=c18 -DFEAT_HTML5 -Oz -flto -mreference-types -c main.c -o C:/msys64/tmp/emscripten_temp_k5foeuxk/main_0.o
clang version 22.0.0git
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:/msys64/clang64/opt/emscripten-llvm/bin
(in-process)
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -cc1 -triple wasm32-unknown-emscripten -Oz -emit-llvm-bc -flto=full -flto-unit -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name main.c -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +reference-types -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=D:/Projetos/molho -v -fcoverage-compilation-dir=D:/Projetos/molho -resource-dir C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22 -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -D EMSCRIPTEN -D FEAT_HTML5 -isysroot C:/msys64/clang64/lib/emscripten/cache/sysroot -internal-isystem C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include -std=c18 -ferror-limit 1 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fignore-exceptions -vectorize-slp -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -o C:/msys64/tmp/emscripten_temp_k5foeuxk/main_0.o -x c main.c
clang -cc1 version 22.0.0git based upon LLVM 22.0.0git default target x86_64-w64-windows-gnu
ignoring nonexistent directory "C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/fakesdl
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/compat
C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include
C:/msys64/clang64/lib/emscripten/cache/sysroot/include
End of search list.
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -target wasm32-unknown-emscripten -fignore-exceptions --sysroot=C:/msys64/clang64/lib/emscripten/cache/sysroot -DEMSCRIPTEN -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -ferror-limit=1 -std=c18 -DFEAT_HTML5 -Oz -flto -mreference-types -c there_she_is.c -o C:/msys64/tmp/emscripten_temp_k5foeuxk/there_she_is_1.o
clang version 22.0.0git
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:/msys64/clang64/opt/emscripten-llvm/bin
(in-process)
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -cc1 -triple wasm32-unknown-emscripten -Oz -emit-llvm-bc -flto=full -flto-unit -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name there_she_is.c -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +reference-types -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=D:/Projetos/molho -v -fcoverage-compilation-dir=D:/Projetos/molho -resource-dir C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22 -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -D EMSCRIPTEN -D FEAT_HTML5 -isysroot C:/msys64/clang64/lib/emscripten/cache/sysroot -internal-isystem C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include -std=c18 -ferror-limit 1 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fignore-exceptions -vectorize-slp -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -o C:/msys64/tmp/emscripten_temp_k5foeuxk/there_she_is_1.o -x c there_she_is.c
clang -cc1 version 22.0.0git based upon LLVM 22.0.0git default target x86_64-w64-windows-gnu
ignoring nonexistent directory "C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/fakesdl
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/compat
C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include
C:/msys64/clang64/lib/emscripten/cache/sysroot/include
End of search list.
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" --version
"C:/msys64/clang64/opt/emscripten-llvm/bin/wasm-ld.exe" -o index.wasm C:/msys64/tmp/emscripten_temp_k5foeuxk/main_0.o C:/msys64/tmp/emscripten_temp_k5foeuxk/there_she_is_1.o -LC:/msys64/clang64/lib/emscripten/cache/sysroot/lib/wasm32-emscripten/lto -LC:/msys64/clang64/lib/emscripten/src/lib C:/msys64/clang64/lib/emscripten/cache/sysroot/lib/wasm32-emscripten/lto/libSDL2.a -lGL-getprocaddr -lal -lhtml5 -lc_optz -lstubs -lnoexit -lc -ldlmalloc -lcompiler_rt -lc++-noexcept -lc++abi-noexcept -lsockets -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr C:/msys64/tmp/tmpp0ild6rrlibemscripten_js_symbols.so --strip-debug -u__cxa_atexit --export=_emscripten_stack_alloc --export=__wasm_call_ctors --export=emscripten_stack_get_current --export=_emscripten_stack_restore --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=main --export-if-defined=__main_argc_argv --export-table -z stack-size=65536 --max-memory=2147483648 --initial-heap=16777216 --no-entry --table-base=1 --global-base=1024
wasm-ld: error: index.wasm.lto.o: undefined symbol: there_she_is_render_html5
emcc: error: 'C:/msys64/clang64/opt/emscripten-llvm/bin/wasm-ld.exe -o index.wasm C:/msys64/tmp/emscripten_temp_k5foeuxk/main_0.o C:/msys64/tmp/emscripten_temp_k5foeuxk/there_she_is_1.o -LC:/msys64/clang64/lib/emscripten/cache/sysroot/lib/wasm32-emscripten/lto -LC:/msys64/clang64/lib/emscripten/src/lib C:/msys64/clang64/lib/emscripten/cache/sysroot/lib/wasm32-emscripten/lto/libSDL2.a -lGL-getprocaddr -lal -lhtml5 -lc_optz -lstubs -lnoexit -lc -ldlmalloc -lcompiler_rt -lc++-noexcept -lc++abi-noexcept -lsockets -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr C:/msys64/tmp/tmpp0ild6rrlibemscripten_js_symbols.so --strip-debug -u__cxa_atexit --export=_emscripten_stack_alloc --export=__wasm_call_ctors --export=emscripten_stack_get_current --export=_emscripten_stack_restore --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=main --export-if-defined=__main_argc_argv --export-table -z stack-size=65536 --max-memory=2147483648 --initial-heap=16777216 --no-entry --table-base=1 --global-base=1024' failed (returned 1)
borked. hint: wasm-ld: error: index.wasm.lto.o: undefined symbol: there_she_is_render_html5
.
like, I know what __externref_t
is an extension and this means that I'm outside the C standard, but you know, I'd like to rely on standard C semantics, that a function has external linkage unless I explicitly tell it to have internal linkage through the static
storage-class specifier.
whatever. I changed my code generator so that there_she_is.c
looks like this:
#define EM_JS2(...) EM_JS(__VA_ARGS__)
EM_JS2(void, there_she_is_render_html5_2, (__externref_t CanvasRenderingContext2D, int frame), {
// one switch..case that spans 300 thousand lines
});
void there_she_is_render_html5(__externref_t CanvasRenderingContext2D, int frame) {
there_she_is_render_html5_2(CanvasRenderingContext2D, frame);
}
now we face a different problem changes. let's see it
problem 2: not enough memory
with the previous kludge applied, let's compile again.
$ emcc -v -ferror-limit=1 -std=c18 -DFEAT_HTML5 -Oz -flto -mreference-types main.c there_she_is.c -sALLOW_MEMORY_GROWTH \
--use-port=sdl2 \
-o index.html --shell-file=shell.html
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -target wasm32-unknown-emscripten -fignore-exceptions --sysroot=C:/msys64/clang64/lib/emscripten/cache/sysroot -DEMSCRIPTEN -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -ferror-limit=1 -std=c18 -DFEAT_HTML5 -Oz -flto -mreference-types -c main.c -o C:/msys64/tmp/emscripten_temp_h86ta11d/main_0.o
clang version 22.0.0git
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:/msys64/clang64/opt/emscripten-llvm/bin
(in-process)
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -cc1 -triple wasm32-unknown-emscripten -Oz -emit-llvm-bc -flto=full -flto-unit -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name main.c -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +reference-types -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=D:/Projetos/molho -v -fcoverage-compilation-dir=D:/Projetos/molho -resource-dir C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22 -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -D EMSCRIPTEN -D FEAT_HTML5 -isysroot C:/msys64/clang64/lib/emscripten/cache/sysroot -internal-isystem C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include -std=c18 -ferror-limit 1 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fignore-exceptions -vectorize-slp -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -o C:/msys64/tmp/emscripten_temp_h86ta11d/main_0.o -x c main.c
clang -cc1 version 22.0.0git based upon LLVM 22.0.0git default target x86_64-w64-windows-gnu
ignoring nonexistent directory "C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/fakesdl
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/compat
C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include
C:/msys64/clang64/lib/emscripten/cache/sysroot/include
End of search list.
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -target wasm32-unknown-emscripten -fignore-exceptions --sysroot=C:/msys64/clang64/lib/emscripten/cache/sysroot -DEMSCRIPTEN -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -ferror-limit=1 -std=c18 -DFEAT_HTML5 -Oz -flto -mreference-types -c there_she_is.c -o C:/msys64/tmp/emscripten_temp_h86ta11d/there_she_is_1.o
clang version 22.0.0git
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:/msys64/clang64/opt/emscripten-llvm/bin
(in-process)
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -cc1 -triple wasm32-unknown-emscripten -Oz -emit-llvm-bc -flto=full -flto-unit -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name there_she_is.c -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +reference-types -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=D:/Projetos/molho -v -fcoverage-compilation-dir=D:/Projetos/molho -resource-dir C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22 -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -D EMSCRIPTEN -D FEAT_HTML5 -isysroot C:/msys64/clang64/lib/emscripten/cache/sysroot -internal-isystem C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include -std=c18 -ferror-limit 1 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fignore-exceptions -vectorize-slp -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -o C:/msys64/tmp/emscripten_temp_h86ta11d/there_she_is_1.o -x c there_she_is.c
clang -cc1 version 22.0.0git based upon LLVM 22.0.0git default target x86_64-w64-windows-gnu
ignoring nonexistent directory "C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/fakesdl
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/compat
C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include
C:/msys64/clang64/lib/emscripten/cache/sysroot/include
End of search list.
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" --version
"C:/msys64/clang64/opt/emscripten-llvm/bin/wasm-ld.exe" -o index.wasm C:/msys64/tmp/emscripten_temp_h86ta11d/main_0.o C:/msys64/tmp/emscripten_temp_h86ta11d/there_she_is_1.o -LC:/msys64/clang64/lib/emscripten/cache/sysroot/lib/wasm32-emscripten/lto -LC:/msys64/clang64/lib/emscripten/src/lib C:/msys64/clang64/lib/emscripten/cache/sysroot/lib/wasm32-emscripten/lto/libSDL2.a -lGL-getprocaddr -lal -lhtml5 -lc_optz -lstubs -lnoexit -lc -ldlmalloc -lcompiler_rt -lc++-noexcept -lc++abi-noexcept -lsockets -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr C:/msys64/tmp/tmp0qg8mlswlibemscripten_js_symbols.so --strip-debug -u__cxa_atexit --export=_emscripten_stack_alloc --export=__wasm_call_ctors --export=emscripten_stack_get_current --export=_emscripten_stack_restore --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=main --export-if-defined=__main_argc_argv --export-table -z stack-size=65536 --max-memory=2147483648 --initial-heap=16777216 --no-entry --table-base=1 --global-base=1024
"C:/msys64/clang64/opt/emscripten-llvm/bin/llvm-objcopy.exe" index.wasm index.wasm '--remove-section=.debug*' --remove-section=producers --remove-section=name
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/compiler.mjs -
"C:\msys64\clang64/bin/wasm-opt" --strip-target-features --post-emscripten -Oz --low-memory-unused --zero-filled-memory --pass-arg=directize-initial-contents-immutable --no-stack-ir index.wasm -o index.wasm --mvp-features --enable-bulk-memory --enable-bulk-memory-opt --enable-call-indirect-overlong --enable-multivalue --enable-mutable-globals --enable-nontrapping-float-to-int --enable-reference-types --enable-sign-ext
"C:\msys64\clang64/bin/wasm-opt" --strip-target-features --post-emscripten -Oz --low-memory-unused --zero-filled-memory --pass-arg=directize-initial-contents-immutable --no-stack-ir index.wasm -o index.wasm --mvp-features --enable-bulk-memory --enable-bulk-memory-opt --enable-call-indirect-overlong --enable-multivalue --enable-mutable-globals --enable-nontrapping-float-to-int --enable-reference-types --enable-sign-ext
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/acorn-optimizer.mjs C:/msys64/tmp/emscripten_temp_h86ta11d/index.js AJSDCE --minify-whitespace -o C:/msys64/tmp/emscripten_temp_h86ta11d/index.jso1.js
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/acorn-optimizer.mjs C:/msys64/tmp/emscripten_temp_h86ta11d/index.js AJSDCE --minify-whitespace -o C:/msys64/tmp/emscripten_temp_h86ta11d/index.jso1.js
<--- Last few GCs --->
[5356:0000017C0532C000] 21568 ms: Scavenge (interleaved) 2031.5 (2048.1) -> 2031.4 (2053.1) MB, pooled: 0 MB, 3.67 / 0.00 ms (average mu = 0.418, current mu = 0.333) allocation failure;
[5356:0000017C0532C000] 22760 ms: Mark-Compact 2035.8 (2054.3) -> 2034.9 (2058.1) MB, pooled: 0 MB, 1188.37 / 0.00 ms (average mu = 0.219, current mu = 0.016) allocation failure; scavenge might not succeed
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
----- Native stack trace -----
1: 00007ffdf58bdff0 ZN4node16EnabledDebugList5ParseERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE+34592
2: 00007ffdf59825fe ZN4node12OnFatalErrorEPKcS1_+718
3: 00007ffdf600bd01 uv_sleep+3304065
4: 00007ffdf627f237 ZN2v88internal10HeapLayout31CheckYoungGenerationConsistencyEPKNS0_11MemoryChunkE+46247
5: 00007ffdf627cbd3 ZN2v88internal10HeapLayout31CheckYoungGenerationConsistencyEPKNS0_11MemoryChunkE+36419
6: 00007ffdf62721d0 ZN2v87CppHeap41CollectGarbageInYoungGenerationForTestingEN5cppgc18EmbedderStackStateE+295424
7: 00007ffdf62505fe ZN2v87CppHeap41CollectGarbageInYoungGenerationForTestingEN5cppgc18EmbedderStackStateE+157230
8: 00007ffdf6713fe7 ZNK2v88internal10TickSample5printEv+395959
9: 0000017c3f3b77fa
emcc: error: 'C:/msys64/clang64/bin/node.exe C:/msys64/clang64/lib/emscripten/tools/acorn-optimizer.mjs C:/msys64/tmp/emscripten_temp_h86ta11d/index.js AJSDCE --minify-whitespace -o C:/msys64/tmp/emscripten_temp_h86ta11d/index.jso1.js' failed (returned 134)
no problem. I searched online and I found a solution. but can we finally compile? no
problem 3 (the one that matters): RangeError: Set maximum size exceeded
on terser.js
I got 12 GB of RAM. let's ramp up usage.
$ NODE_OPTIONS=--max-old-space-size-percentage=90 emcc -v -ferror-limit=1 -std=c18 -DFEAT_HTML5 -Oz -flto -mreference-types main.c there_she_is.c -sALLOW_MEMORY_GROWTH \
--use-port=sdl2 \
-o index.html --shell-file=shell.html
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -target wasm32-unknown-emscripten -fignore-exceptions --sysroot=C:/msys64/clang64/lib/emscripten/cache/sysroot -DEMSCRIPTEN -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -ferror-limit=1 -std=c18 -DFEAT_HTML5 -Oz -flto -mreference-types -c main.c -o C:/msys64/tmp/emscripten_temp_6klaj5ia/main_0.o
clang version 22.0.0git
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:/msys64/clang64/opt/emscripten-llvm/bin
(in-process)
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -cc1 -triple wasm32-unknown-emscripten -Oz -emit-llvm-bc -flto=full -flto-unit -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name main.c -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +reference-types -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=D:/Projetos/molho -v -fcoverage-compilation-dir=D:/Projetos/molho -resource-dir C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22 -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -D EMSCRIPTEN -D FEAT_HTML5 -isysroot C:/msys64/clang64/lib/emscripten/cache/sysroot -internal-isystem C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include -std=c18 -ferror-limit 1 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fignore-exceptions -vectorize-slp -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -o C:/msys64/tmp/emscripten_temp_6klaj5ia/main_0.o -x c main.c
clang -cc1 version 22.0.0git based upon LLVM 22.0.0git default target x86_64-w64-windows-gnu
ignoring nonexistent directory "C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/fakesdl
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/compat
C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include
C:/msys64/clang64/lib/emscripten/cache/sysroot/include
End of search list.
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -target wasm32-unknown-emscripten -fignore-exceptions --sysroot=C:/msys64/clang64/lib/emscripten/cache/sysroot -DEMSCRIPTEN -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -ferror-limit=1 -std=c18 -DFEAT_HTML5 -Oz -flto -mreference-types -c there_she_is.c -o C:/msys64/tmp/emscripten_temp_6klaj5ia/there_she_is_1.o
clang version 22.0.0git
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:/msys64/clang64/opt/emscripten-llvm/bin
(in-process)
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -cc1 -triple wasm32-unknown-emscripten -Oz -emit-llvm-bc -flto=full -flto-unit -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name there_she_is.c -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +reference-types -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=D:/Projetos/molho -v -fcoverage-compilation-dir=D:/Projetos/molho -resource-dir C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22 -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -D EMSCRIPTEN -D FEAT_HTML5 -isysroot C:/msys64/clang64/lib/emscripten/cache/sysroot -internal-isystem C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include -std=c18 -ferror-limit 1 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fignore-exceptions -vectorize-slp -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -o C:/msys64/tmp/emscripten_temp_6klaj5ia/there_she_is_1.o -x c there_she_is.c
clang -cc1 version 22.0.0git based upon LLVM 22.0.0git default target x86_64-w64-windows-gnu
ignoring nonexistent directory "C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/fakesdl
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/compat
C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include
C:/msys64/clang64/lib/emscripten/cache/sysroot/include
End of search list.
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" --version
"C:/msys64/clang64/opt/emscripten-llvm/bin/wasm-ld.exe" -o index.wasm C:/msys64/tmp/emscripten_temp_6klaj5ia/main_0.o C:/msys64/tmp/emscripten_temp_6klaj5ia/there_she_is_1.o -LC:/msys64/clang64/lib/emscripten/cache/sysroot/lib/wasm32-emscripten/lto -LC:/msys64/clang64/lib/emscripten/src/lib C:/msys64/clang64/lib/emscripten/cache/sysroot/lib/wasm32-emscripten/lto/libSDL2.a -lGL-getprocaddr -lal -lhtml5 -lc_optz -lstubs -lnoexit -lc -ldlmalloc -lcompiler_rt -lc++-noexcept -lc++abi-noexcept -lsockets -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr C:/msys64/tmp/tmp_7_5cla3libemscripten_js_symbols.so --strip-debug -u__cxa_atexit --export=_emscripten_stack_alloc --export=__wasm_call_ctors --export=emscripten_stack_get_current --export=_emscripten_stack_restore --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=main --export-if-defined=__main_argc_argv --export-table -z stack-size=65536 --max-memory=2147483648 --initial-heap=16777216 --no-entry --table-base=1 --global-base=1024
"C:/msys64/clang64/opt/emscripten-llvm/bin/llvm-objcopy.exe" index.wasm index.wasm '--remove-section=.debug*' --remove-section=producers --remove-section=name
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/compiler.mjs -
"C:\msys64\clang64/bin/wasm-opt" --strip-target-features --post-emscripten -Oz --low-memory-unused --zero-filled-memory --pass-arg=directize-initial-contents-immutable --no-stack-ir index.wasm -o index.wasm --mvp-features --enable-bulk-memory --enable-bulk-memory-opt --enable-call-indirect-overlong --enable-multivalue --enable-mutable-globals --enable-nontrapping-float-to-int --enable-reference-types --enable-sign-ext
"C:\msys64\clang64/bin/wasm-opt" --strip-target-features --post-emscripten -Oz --low-memory-unused --zero-filled-memory --pass-arg=directize-initial-contents-immutable --no-stack-ir index.wasm -o index.wasm --mvp-features --enable-bulk-memory --enable-bulk-memory-opt --enable-call-indirect-overlong --enable-multivalue --enable-mutable-globals --enable-nontrapping-float-to-int --enable-reference-types --enable-sign-ext
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/acorn-optimizer.mjs C:/msys64/tmp/emscripten_temp_6klaj5ia/index.js AJSDCE --minify-whitespace -o C:/msys64/tmp/emscripten_temp_6klaj5ia/index.jso1.js
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/acorn-optimizer.mjs C:/msys64/tmp/emscripten_temp_6klaj5ia/index.js AJSDCE --minify-whitespace -o C:/msys64/tmp/emscripten_temp_6klaj5ia/index.jso1.js
C:\msys64\clang64\lib\emscripten\third_party\terser\terser.js:9388
printed_comments.add(comments);
^
RangeError: Set maximum size exceeded
at Set.add (<anonymous>)
at Object.prepend_comments (C:\msys64\clang64\lib\emscripten\third_party\terser\terser.js:9388:26)
at doit (C:\msys64\clang64\lib\emscripten\third_party\terser\terser.js:9604:20)
at AST_Number.<anonymous> (C:\msys64\clang64\lib\emscripten\third_party\terser\terser.js:9613:13)
at C:\msys64\clang64\lib\emscripten\third_party\terser\terser.js:10689:19
at doit (C:\msys64\clang64\lib\emscripten\third_party\terser\terser.js:9606:13)
at AST_Binary.<anonymous> (C:\msys64\clang64\lib\emscripten\third_party\terser\terser.js:9613:13)
at C:\msys64\clang64\lib\emscripten\third_party\terser\terser.js:10711:20
at doit (C:\msys64\clang64\lib\emscripten\third_party\terser\terser.js:9606:13)
at AST_Assign.<anonymous> (C:\msys64\clang64\lib\emscripten\third_party\terser\terser.js:9613:13)
Node.js v24.8.0
emcc: error: 'C:/msys64/clang64/bin/node.exe C:/msys64/clang64/lib/emscripten/tools/acorn-optimizer.mjs C:/msys64/tmp/emscripten_temp_6klaj5ia/index.js AJSDCE --minify-whitespace -o C:/msys64/tmp/emscripten_temp_6klaj5ia/index.jso1.js' failed (returned 1)
now. I don't what printed_comments
is, what purpose it serves. but yesterday it was very late in the night, I got very very angry and I decided to just wrap everything in try..catch
clauses as it crashed and see what happens, out of spite. here are the changes I made:
--- terser.js 2025-09-20 02:35:51.751445600 -0300
+++ /clang64/lib/emscripten/third_party/terser/terser.js 2025-09-20 02:47:38.656924900 -0300
@@ -9385,7 +9385,7 @@
if (!comments) {
comments = start.comments_before = [];
}
- printed_comments.add(comments);
+ try { printed_comments.add(comments); } catch (e) { }
if (keyword_with_value) {
var tw = new TreeWalker(function(node) {
@@ -9403,7 +9403,7 @@
if (!node.start) return;
var text = node.start.comments_before;
if (text && !printed_comments.has(text)) {
- printed_comments.add(text);
+ try { printed_comments.add(text); } catch (e) { }
comments = comments.concat(text);
}
} else {
@@ -9431,6 +9431,7 @@
var last_nlb = has_nlb();
comments.forEach(function(c, i) {
printed_comments.add(c);
+ //try { printed_comments.add(c); } catch (e) { }
if (!last_nlb) {
if (c.nlb) {
print("\n");
@@ -9476,7 +9477,7 @@
if (!(node instanceof AST_Statement || comments.every((c) =>
!/comment[134]/.test(c.type)
))) return;
- printed_comments.add(comments);
+ try { printed_comments.add(comments); } catch (e) { }
var insert = OUTPUT.length();
comments.filter(comment_filter, node).forEach(function(c, i) {
if (printed_comments.has(c)) return;
now let's see if it compiles:
$ NODE_OPTIONS=--max-old-space-size-percentage=90 emcc -v -ferror-limit=1 -std=c18 -DFEAT_HTML5 -Oz -flto -mreference-types main.c there_she_is.c -sALLOW_MEMORY_GROWTH \
--use-port=sdl2 \
-o index.html --shell-file=shell.html
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -target wasm32-unknown-emscripten -fignore-exceptions --sysroot=C:/msys64/clang64/lib/emscripten/cache/sysroot -DEMSCRIPTEN -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -ferror-limit=1 -std=c18 -DFEAT_HTML5 -Oz -flto -mreference-types -c main.c -o C:/msys64/tmp/emscripten_temp_kxfk44cc/main_0.o
clang version 22.0.0git
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:/msys64/clang64/opt/emscripten-llvm/bin
(in-process)
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -cc1 -triple wasm32-unknown-emscripten -Oz -emit-llvm-bc -flto=full -flto-unit -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name main.c -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +reference-types -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=D:/Projetos/molho -v -fcoverage-compilation-dir=D:/Projetos/molho -resource-dir C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22 -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -D EMSCRIPTEN -D FEAT_HTML5 -isysroot C:/msys64/clang64/lib/emscripten/cache/sysroot -internal-isystem C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include -std=c18 -ferror-limit 1 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fignore-exceptions -vectorize-slp -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -o C:/msys64/tmp/emscripten_temp_kxfk44cc/main_0.o -x c main.c
clang -cc1 version 22.0.0git based upon LLVM 22.0.0git default target x86_64-w64-windows-gnu
ignoring nonexistent directory "C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/fakesdl
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/compat
C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include
C:/msys64/clang64/lib/emscripten/cache/sysroot/include
End of search list.
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -target wasm32-unknown-emscripten -fignore-exceptions --sysroot=C:/msys64/clang64/lib/emscripten/cache/sysroot -DEMSCRIPTEN -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -ferror-limit=1 -std=c18 -DFEAT_HTML5 -Oz -flto -mreference-types -c there_she_is.c -o C:/msys64/tmp/emscripten_temp_kxfk44cc/there_she_is_1.o
clang version 22.0.0git
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: C:/msys64/clang64/opt/emscripten-llvm/bin
(in-process)
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" -cc1 -triple wasm32-unknown-emscripten -Oz -emit-llvm-bc -flto=full -flto-unit -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name there_she_is.c -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -target-feature +reference-types -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=D:/Projetos/molho -v -fcoverage-compilation-dir=D:/Projetos/molho -resource-dir C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22 -isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2 -D EMSCRIPTEN -D FEAT_HTML5 -isysroot C:/msys64/clang64/lib/emscripten/cache/sysroot -internal-isystem C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem C:/msys64/clang64/lib/emscripten/cache/sysroot/include -std=c18 -ferror-limit 1 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fignore-exceptions -vectorize-slp -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -o C:/msys64/tmp/emscripten_temp_kxfk44cc/there_she_is_1.o -x c there_she_is.c
clang -cc1 version 22.0.0git based upon LLVM 22.0.0git default target x86_64-w64-windows-gnu
ignoring nonexistent directory "C:/msys64/clang64/lib/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/SDL2
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/fakesdl
C:/msys64/clang64/lib/emscripten/cache/sysroot/include/compat
C:/msys64/clang64/opt/emscripten-llvm/lib/clang/22/include
C:/msys64/clang64/lib/emscripten/cache/sysroot/include
End of search list.
"C:/msys64/clang64/opt/emscripten-llvm/bin/clang.exe" --version
"C:/msys64/clang64/opt/emscripten-llvm/bin/wasm-ld.exe" -o index.wasm C:/msys64/tmp/emscripten_temp_kxfk44cc/main_0.o C:/msys64/tmp/emscripten_temp_kxfk44cc/there_she_is_1.o -LC:/msys64/clang64/lib/emscripten/cache/sysroot/lib/wasm32-emscripten/lto -LC:/msys64/clang64/lib/emscripten/src/lib C:/msys64/clang64/lib/emscripten/cache/sysroot/lib/wasm32-emscripten/lto/libSDL2.a -lGL-getprocaddr -lal -lhtml5 -lc_optz -lstubs -lnoexit -lc -ldlmalloc -lcompiler_rt -lc++-noexcept -lc++abi-noexcept -lsockets -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr C:/msys64/tmp/tmp2m1ac2xvlibemscripten_js_symbols.so --strip-debug -u__cxa_atexit --export=_emscripten_stack_alloc --export=__wasm_call_ctors --export=emscripten_stack_get_current --export=_emscripten_stack_restore --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=main --export-if-defined=__main_argc_argv --export-table -z stack-size=65536 --max-memory=2147483648 --initial-heap=16777216 --no-entry --table-base=1 --global-base=1024
"C:/msys64/clang64/opt/emscripten-llvm/bin/llvm-objcopy.exe" index.wasm index.wasm '--remove-section=.debug*' --remove-section=producers --remove-section=name
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/compiler.mjs -
"C:\msys64\clang64/bin/wasm-opt" --strip-target-features --post-emscripten -Oz --low-memory-unused --zero-filled-memory --pass-arg=directize-initial-contents-immutable --no-stack-ir index.wasm -o index.wasm --mvp-features --enable-bulk-memory --enable-bulk-memory-opt --enable-call-indirect-overlong --enable-multivalue --enable-mutable-globals --enable-nontrapping-float-to-int --enable-reference-types --enable-sign-ext
"C:\msys64\clang64/bin/wasm-opt" --strip-target-features --post-emscripten -Oz --low-memory-unused --zero-filled-memory --pass-arg=directize-initial-contents-immutable --no-stack-ir index.wasm -o index.wasm --mvp-features --enable-bulk-memory --enable-bulk-memory-opt --enable-call-indirect-overlong --enable-multivalue --enable-mutable-globals --enable-nontrapping-float-to-int --enable-reference-types --enable-sign-ext
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/acorn-optimizer.mjs C:/msys64/tmp/emscripten_temp_kxfk44cc/index.js AJSDCE --minify-whitespace -o C:/msys64/tmp/emscripten_temp_kxfk44cc/index.jso1.js
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/acorn-optimizer.mjs C:/msys64/tmp/emscripten_temp_kxfk44cc/index.js AJSDCE --minify-whitespace -o C:/msys64/tmp/emscripten_temp_kxfk44cc/index.jso1.js
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/acorn-optimizer.mjs C:/msys64/tmp/emcc_acorn_info_c6sokjzz.js emitDCEGraph --no-print
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/acorn-optimizer.mjs C:/msys64/tmp/emcc_acorn_info_c6sokjzz.js emitDCEGraph --no-print
"C:\msys64\clang64/bin/wasm-metadce" --graph-file=C:/msys64/tmp/emcc_dce_graph_vlxd3z8q.json index.wasm -o index.wasm --mvp-features --enable-bulk-memory --enable-bulk-memory-opt --enable-call-indirect-overlong --enable-multivalue --enable-mutable-globals --enable-nontrapping-float-to-int --enable-reference-types --enable-sign-ext
"C:\msys64\clang64/bin/wasm-metadce" --graph-file=C:/msys64/tmp/emcc_dce_graph_vlxd3z8q.json index.wasm -o index.wasm --mvp-features --enable-bulk-memory --enable-bulk-memory-opt --enable-call-indirect-overlong --enable-multivalue --enable-mutable-globals --enable-nontrapping-float-to-int --enable-reference-types --enable-sign-ext
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/acorn-optimizer.mjs C:/msys64/tmp/emcc_acorn_info_8eejoyup.js applyDCEGraphRemovals --minify-whitespace -o C:/msys64/tmp/emscripten_temp_kxfk44cc/index.jso2.js
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/acorn-optimizer.mjs C:/msys64/tmp/emcc_acorn_info_8eejoyup.js applyDCEGraphRemovals --minify-whitespace -o C:/msys64/tmp/emscripten_temp_kxfk44cc/index.jso2.js
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/acorn-optimizer.mjs C:/msys64/tmp/emscripten_temp_kxfk44cc/index.jso2.js AJSDCE --minify-whitespace -o C:/msys64/tmp/emscripten_temp_kxfk44cc/index.jso3.js
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/acorn-optimizer.mjs C:/msys64/tmp/emscripten_temp_kxfk44cc/index.jso2.js AJSDCE --minify-whitespace -o C:/msys64/tmp/emscripten_temp_kxfk44cc/index.jso3.js
"C:\msys64\clang64/bin/wasm-opt" --minify-imports-and-exports-and-modules --optimize-level=2 --shrink-level=2 --optimize-stack-ir index.wasm -o index.wasm --mvp-features --enable-bulk-memory --enable-bulk-memory-opt --enable-call-indirect-overlong --enable-multivalue --enable-mutable-globals --enable-nontrapping-float-to-int --enable-reference-types --enable-sign-ext
"C:\msys64\clang64/bin/wasm-opt" --minify-imports-and-exports-and-modules --optimize-level=2 --shrink-level=2 --optimize-stack-ir index.wasm -o index.wasm --mvp-features --enable-bulk-memory --enable-bulk-memory-opt --enable-call-indirect-overlong --enable-multivalue --enable-mutable-globals --enable-nontrapping-float-to-int --enable-reference-types --enable-sign-ext
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/acorn-optimizer.mjs C:/msys64/tmp/emcc_acorn_info_x6gweayr.js applyImportAndExportNameChanges --minify-whitespace -o C:/msys64/tmp/emscripten_temp_kxfk44cc/index.jso4.js
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/acorn-optimizer.mjs C:/msys64/tmp/emcc_acorn_info_x6gweayr.js applyImportAndExportNameChanges --minify-whitespace -o C:/msys64/tmp/emscripten_temp_kxfk44cc/index.jso4.js
"C:/msys64/clang64/bin/node.exe" C:/msys64/clang64/lib/emscripten/tools/preprocessor.mjs - shell.html
"C:/msys64/clang64/lib/emscripten/node_modules/.bin/html-minifier-terser.cmd" index.html -o index.html --collapse-whitespace --remove-comments --remove-tag-whitespace --sort-attributes --sort-class-name --decode-entities --collapse-boolean-attributes --remove-attribute-quotes --remove-redundant-attributes --remove-script-type-attributes --remove-style-link-type-attributes --use-short-doctype --minify-css true --minify-js true
can it run? yes it can, I can attest it visually. so can you: https://www.newgrounds.com/projects/games/6419340/preview
did it compile correctly? I don't know, really. I can't distinguish if it could have miscompiled due to that Set not being filled correctly.
here are the files necessary to compile the program to hit the error, with EM_JS
kludge already applied:
sorry for any profanity in advance.