hfinkel added a comment.

In https://reviews.llvm.org/D31885#730853, @hfinkel wrote:

>


...

> 
> 
>> (And the nonsensicality of the standard very much continues. The code that 
>> we've all agreed is obviously being miscompiled here is still a strict 
>> violation of the "improved" union rules in C++, and if we decide to treat it 
>> as ill-formed we're going to break a massive amount of code (and vector code 
>> in particular heavily uses unions), because trust me, nobody is reliably 
>> placement-newing union fields when they're non-trivial. C++'s new rules are 
>> unworkable in part because they rely on C++-specific features that cannot be 
>> easily adopted in headers which need to be language-neutral.)
> 
> I think we all agree that the vector types need to have their scalar 
> (element) types as parents in the current TBAA representation. That's a 
> separate change that we should just make. That, unfortunately, only fixes a 
> subset of the union-related miscompiles.

Looking at this in more detail, we actually generate builtin-vector types which 
use char* as their access type (always, even for floating-point vectors). It is 
only the struct-path info which causes the issue for the test case here. It 
might be reasonable to make this **less** conservative, but that's another 
story...


Repository:
  rL LLVM

https://reviews.llvm.org/D31885



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to