On Apr 11, 2011, at 9:44 AM, Chandler Carruth wrote:
> I share John and Doug's concern over false positive rates. However, I'd like 
> to evaluate that by getting a conservative version of this in, trying it on 
> some code, and evaluating the fallout. If this isn't useful we can drop it.

As long as it's off by default and enabled by some extremely specific
flag like -Wpedantic-aliasing.  I am not willing to consider a diagnostic
that's on by default unless it's policing the relaxed aliasing rules that
Clang uses, where l-values that "obviously" alias are allowed to alias
regardless of type.

> However, I think we could do a couple of things more to avoid false-positives:
> 
> 1) Only warn on reference reinterpret casts when the result is in an 
> lvalue-to-rvalue cast to avoid this false positive:
> 
> float f = 0.0f;
> int *x = &reinterpret_cast<int&>(f);

That's probably reasonable.  I'd actually be okay with warning on this
in general if you can come up with a small set of "universal-ish" types that
you think it's reasonable to cast something through, like maybe void& and
void*.

Oh, and of course you can't warn about reinterpret_casts to/from
references/pointers to char types.

> 2) Don't warn for reinterpret casts of tag types.

Probably a good first iteration.

John.
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to