Validity of __asm__ transformation with "m" reference

Michael Matz matz@suse.de
Mon Jul 4 14:16:00 GMT 2011


Hi,

On Mon, 4 Jul 2011, Jakub Jelinek wrote:

> No, what you can get out of that is e.g. optimizing away otherwise unneeded
> large variable.
> Consider:
> static const int i[131072] = { 1, 2, 3, 4, 5 };
> void foo (void)
> {
>   __asm volatile ("" : : "m" (i[0]));
> }
> By giving the asm just address of an const int 1 instead of the whole array
> you can optimize the large array away.

Hmm, that's right.  If that happens often.  As soon as you use the same 
element multiple times you'll offset some of the potential savings.  I 
guess we don't take this into account, so I'm not sure if that reason is 
very convincing.


Ciao,
Michael.



More information about the Gcc mailing list