Moved from https://issues.dlang.org/show_bug.cgi?id=5922 bearophile_hugs@eml.cc writes: D2 code, static (thread-local) variables can't be used in ASM: void main() { static size_t x = 10; asm { mov EDI, x; } } It produces: object.Error: Access Violation They work using __gshared, this gives no errors: void main() { __gshared static size_t x = 10; asm { mov EDI, x; } } My suggestion is to remove this source of errors. One solution may be to disallow the direct access to static variables from asm code, avoiding this bug.
The current dmd says: test.d(7): Error: cannot directly load TLS variable `x`