Skip to content

terser.js: RangeError: Set maximum size exceeded #25331

@bottle2

Description

@bottle2

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions