https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90181
--- Comment #3 from nfxjfg at googlemail dot com --- Yes, it's documented this way, but it makes it appear all kinds of fragile. For one, I normally expect that the compiler will reorder and interleave any statements in my code (because that's what compilers always tend to do from a user's POV), so it seems weird that it works at all, since there is nothing that strictly associates the register declaration and the asm block. Yes, the gcc docs (the part you quoted in particular) sort of make it clear that it's simply the lexical order of operations that matters here. In the gcc example for example, the compiler can't just move the initialization of t1 below the p1 initialization, although with normal code it can and will do that. Anyway, that is not the central point of this feature request. I only brought it up as an argument that register variables are confusing and roundabout. The central point of this feature request is that I'm asking for a way to specify a named register in a contraint directly, instead of having to use this detour over register variables. Can I ask why this feature request has been rejected?