it turns out the asm code must be written as "MOV [RIP+r], 7", as x64 uses RIP-relative addressing. Fair enough, and that works fine. But it made me think (as I noted in the bug report): why does the compiler allow you to write code that doesn't make sense :)?
A compiler does not program for you. It checks syntax and converts that to backend code.
so changing the (valid) user-written assembly code in a way that may or may not be intended
so changing the (valid) user-written assembly code in a way that may or may not be intended
well, then maybe add some syntax to explicitly put the intention in?
like, extending Microsoft ASM style
asm MOV AUTO PTR r, 7 // crash! end;