This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc 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: i386 inline-asm string functions - some questions


On Wed, Dec 24, 2003 at 04:38:19PM -0800, Richard Henderson wrote:
> On Thu, Dec 25, 2003 at 05:20:46AM +0500, Denis Zaitsev wrote:
> > >From some moment in the past, the next input parameters are used here
> > and there in sysdeps/i386/i486/bits/string.h:
> >
> >         "m" ( *(struct { char __x[0xfffffff]; } *)__s)
> >
> > When I was seeking for the reasons to do so, I've found some
> > discussions about this in libc-alpha and gcc mailing lists.  As I
> > understand from there, there are an options - to use the "m" arg(s)
> > shown above or just to use "memory" in the list of a clobbered
> > registers.  So, the question is: why the "m"-way had been choosen?
>
> Someone wanted to describe that memory is read, but not written.
> There's no real good way to do that.
>
> You could use the "X" constraint, which is supposed to mean "anything"
> and by implication "unused", but it's normally only with scratch
> registers, not memories, and the address reloads don't get deleted.
 
Yes, I've tried the "X" - there is no difference from the "m" - all
the same unneded extra code (exactly).
 
> You could file an enhancement pr against "X" if you want.

Do you mean a kind of a complain that "X" does't work as it should?


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