This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: C++17 std::launder and aliasing
On Fri, Oct 21, 2016 at 08:54:42PM +0300, Ville Voutilainen wrote:
> >> Or we could add a typegeneric __builtin_launder builtin that would
> >> immediately fold to its argument. Then we can change it any time we
> >> figure
> >> out we need to do something there.
> >
> >
> > That would work too. I shoulda left this thread on gcc@ :-)
> >
> > As an aside, __has_builtin is pretty useful (like __has_include and
> > __has_attribute).
> >
> >
>
> Richard Smith is suggesting that gcc needs a real launder:
> https://godbolt.org/g/Ymdm0Y
Seems that testcase is devirtualization related.
With -O3 -fno-devirtualize we return 3 (but still no calls).
With asm ("" : "+g" (p)); before return p; in launder we don't devirtualize
it any more and return 3 in the end. Is the testcase only valid
with std::launder and not valid otherwise (I hope so, otherwise we are in
big trouble with devirtualization)?
Jakub