No, all *static non-immutable* variables are thread-local by default, not just "all variables".
I misspoke but this should write something https://run.dlang.io/is/3u1wFp
If you look at asm output there are "call _d_arraycatT@PLT32" instruction so those variables weren't optimized away and yet no output to stdout.
If remove that flag ldc now compiles dmd but lacks optimizations so more work needs to be done.