https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101422

--- Comment #5 from Simon Willcocks <simon.willcocks at gmx dot de> ---
(In reply to Andrew Pinski from comment #4)
> (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 :).

I know. I've been doing this for a while, now. *That* register variable and the
array it pointed to were correctly initialised. r0-r3 are clobbered by any
function call, although I didn't program a function call, the compiler did.

Reply via email to