[llvm-dev] GCC 5 and -Wstrict-aliasing in JSON.h
Kim Gräsman via llvm-dev
llvm-dev at lists.llvm.org
Sat Aug 18 01:44:26 PDT 2018
On Fri, Aug 17, 2018 at 1:17 PM Richard Biener <rguenther at suse.de> wrote:
>
> Properly warning for strict-aliasing violations isn't possible - you'd
> need to conservatively detect must-aliases and track dynamic types.
> If you'd detect a violation the compiler should better not exploit it.
> You may have noticed we do not "miscompile"
>
> int foo (int *p)
> {
> *p = 1;
> *(float *)p = 0.0;
> return *p;
> }
>
> since quite some time but correctly zero *p and return zero. We
> do not warn for the above though because the access uses a pointer.
> We only warn when we see a declared type of the storage in the very
> same GENERIC expression(!).
>
> > So what exactly is the type Union? It has a field called buffer.
>
> GCC 6+ contain fixes for sth that later C++ standards appearantly
> need, namely that copy-assignment of aggregates with embedded
> storage copies the dynamic type of said storage. Otherwise placement
> new should work just fine.
Thanks Richard (and all) good info!
- Kim
More information about the llvm-dev
mailing list