https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101422
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|FIXED |INVALID --- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Simon Willcocks from comment #2) > That's not an accurate description of the problem; the value of the variable > is being passed, not its address. As a register variable, it doesn't have an > address. It is the address of the array that is being passed (I was copying and pasting from another bug). register uint32_t *cap_and_join asm( "r5" ) = cap_and_join_style; Is the same as: register uint32_t *cap_and_join asm( "r5" ) = &cap_and_join_style[0]; Because array decays to pointers :).