January 5, 2026
Floatpocalypse: when _fltused crashes the party
Ask HN: Help with LLVM
Indie language dev vs compiler: the float symbol nobody can kill sparks chaos
TLDR: A language developer tried to block LLVM from pulling in the Windows C runtime, but the _fltused float symbol kept reappearing. Comments split between “delete CRT and see who screams,” proof LLVM emits it by design, and practical advice to hit the LLVM Discord for help.
An indie language creator tried to build a custom runtime and ditch the default C runtime (the built‑in system library), only to get jump‑scared by a ghostly symbol called _fltused that keeps crashing the party. The thread erupted into a mix of nostalgia, tough love, and receipts. One veteran sighed, “I haven’t used LLVM in ages… it injects references to functions in the CRT,” reminding everyone this float symbol has haunted Windows builds forever. Another commenter went full chaos mode: “just delete the CRT files and see who screams.” That line instantly became the meme of the day.
Then came the receipts. User wmobit dropped a code link proving the compiler really does force it: “The _fltused handling is quite crude” with a pointer to LLVM’s source, and andrewf pulled in Microsoft lore about Windows linker conventions via Raymond Chen’s blog: The Old New Thing. Meanwhile, the practical crowd pointed the OP to the LLVM Discord for real‑time help.
The drama: Is it even possible—or wise—to fully bypass the CRT? Hardliners say “read the source, accept the rules.” Hackers say “rip it out and fight the toolchain.” The jokes wrote themselves: “Float ghost,” “who screamed,” and “you wanted a runtime, the runtime wanted you.”
Key Points
- •A developer is building a new language with a custom runtime and a stub library intended for .lib output.
- •LLVM introduces the CRT symbol _fltused during compilation, causing a duplicate definition error.
- •The developer’s LLVM IR (.ll) file only defines _fltused, which they want included in the final library.
- •Attempts to bypass CRT linkage using flags in Clang, MinGW, and LLVM have failed; CRT is still linked.
- •Direct conversion from .ll to .as is blocked by LLVM compiler behavior, hindering the custom runtime build.