I wrote the code to do that, twice. It always "kinda works" but the devil is in the details and it increases the attack surface of the compiler too much.
Consider this problem:
void a(int* x; int L);
Does the a write into x? If it does, we need to write back the changes performed to the blob x to the symbolic representation the VM uses.
I can only see it work reliably if the VM gets rewritten to support blob data structures natively. But then it needs to keep supporting dealing with Nim's ASTs and also needs its own version of the GC. It's tough, maybe embrace the LLVM backend instead. :-)
@Araq, ah, thank you very much for the explanation. I thought it might be more complicated than I originally considered. I find this kind of stuff fascinating.
I didn't know an LLVM backend was in the works :0