Replace address computation of TLS variables, not access, but yes.
It does solve it, by making that IR not possible to write. In my not-really-fleshed-out idea here, @x should no longer be usable as a pointer, so i32* @x is impossible to write in IR – which is as it should be. You need an Instruction to retrieve the address for @x, and thus it’s clearly impossible to use in a global value initializer. Perhaps @x has become a token type of some sort, which can be passed to the intrinsic but isn’t otherwise usable?
We must solve the readnone problem, so this line of objection isn’t very persuasive to me. It’s not just a nice-to-have that we can ignore… And, additionally, I think we do have good options for solving it.