This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: inline asm clobbers

On Thu, Mar 12, 2015 at 03:09:52PM -0700, David Wohlferd wrote:
> Ahh.  So perhaps as I suspected: this is more commonly used on non-i386 
> platforms.  So clearly removing this is out of the question.

glibc uses it for PowerPC and s390 at least (I only grepped for "3",
quotes included -- there may be more archs that use it).

This feature was added to GCC very long ago, in 1992, SVN commit r334.
The code comment (varasm.c:decode_reg_name_and_count nowadays) makes
clear it is very much deliberate (not an implementation accident).

> This brings us to the question of documentation.  Right now the docs 
> only refer to register names.  I expect it would be helpful for people 
> to understand what it means when they come across code that uses 
> indices.  A few words in the 'clobbers' section and the two Reg Vars 
> sections would probably cover it.

I wouldn't.  Numbers *are* the register names for all platforms where
you are likely to see this used.  Expecting numbers in a clobber to
work as a backref to an output constraint is a) strange, and b) fatal,
as so many errors with asm are.  I think the only way to teach people
to not hurt themselves so much with asm is to let them hurt themselves
a lot, so they'll be much more careful in the future :-/

> I realize this may seem a bit redundant for people who are used to 
> registers named R0,R1,R2..., but on the i386, the order is: 
> ax,dx,cx,bx,si...

And that isn't even the same as the hardware numbering.  No one will
or should use this on x86, and if they do, well, hurt ;-)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]