This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: [PATCH 1/4] Mark all member functions with memory models always inline
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Andi Kleen <ak at linux dot intel dot com>
- Cc: Jonathan Wakely <jwakely dot gcc at gmail dot com>, Andi Kleen <andi at firstfloor dot org>, gcc-patches at gcc dot gnu dot org, libstdc++ at gcc dot gnu dot org, rth at redhat dot com
- Date: Tue, 19 Mar 2013 17:10:22 +0100
- Subject: Re: [PATCH 1/4] Mark all member functions with memory models always inline
- References: <1363440569-17331-1-git-send-email-andi at firstfloor dot org> <CAH6eHdR=VhEfAes6S97CfBf0Newe1h3EeoxreRKKHpi4mpJh=w at mail dot gmail dot com> <20130319064639 dot GA12913 at tucnak dot redhat dot com> <20130319155121 dot GM19692 at tassilo dot jf dot intel dot com>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Tue, Mar 19, 2013 at 08:51:21AM -0700, Andi Kleen wrote:
> > Using __always_inline as the name of the macro is a bad idea, glibc
> > headers use that macro already. Just use something else in public headers
> > that aren't part of glibc.
>
> That's why I had the ifdef, but ok. I'll use __force_inline then.
I'd say Jonathan's _GLIBCXX_ALWAYS_INLINE would be better.
BTW, have you verified always_inline works fine for -O0?
int x;
inline __attribute__((always_inline)) bool
test_and_set(int __m = 5)
{
return __atomic_test_and_set (&x, __m);
}
int
foo (void)
{
return test_and_set (65536 | 5);
}
with -O0 -mhle doesn't result in xacquire, guess for !optimize
get_memmodel would need to look through chain of SSA_NAMEs if SSA_NAME
(that can appear because of inlining), looking for INTEGER_CSTs.
If there is:
_7 = 0x10005;
_8 = _7;
_9 = _8;
__atomic_test_and_set (&x, _9);
still return 0x10005 rather than MEMMODEL_SEQ_CST.
Jakub