[RFA] Using the new atomicity builtins

Benjamin Kosnik bkoz@redhat.com
Thu May 26 07:02:00 GMT 2005

> >An annoyance is with the i*86 targets: the target bits are implemented
> >only for i486 and later (for the "obvious" reasons) but, by default, g++
> >generates code runnable also on i386. Therefore we have to somehow
> >detect whether -march=i486 was passed and switch from the fall back
> >(whichever it is) to the actual builtin, basing on that. That's why my
> >first block of work doesn't include i686, which actually is also done,
> >in the compiler. Ideas about the best way to do this? Also, in case of
> >x86_64 in real 64-bit mode (vs 32-bit mode) this is not a problem, of
> >course, but we have to check for that. Annoying. Ideas about the best
> >way to deal with such issues? Is __i486__ or similar going to work?

Oh, I remember this now. 

> Steven Bosscher suggested privately that maybe a builtin define is the
> best solution. It looks like could boil down to something as simple as
> (in gcc/config/i386/i386.h):
>   if (!TARGET_386)
>     builtin_define ("__x86_atomic__");
> that would encompass everything i?86 and x86_64 related.

This might be the way to go.

A quick question: isn't configure.host's cpu_include_dir already set to
the appropriate target based on things like -march=i486? If so,
couldn't you just re-use this solution for the i386/i486+ issue?

Or, are you talking about putting these atomic operations back into
headers, and not .cc/.o files?

Maybe I'm just confused...


More information about the Libstdc++ mailing list