Pinging this myself, adding Richard Smith as another reviewer. I don't quite feel qualified to give the final word on it, but I'm fixing an analyzer bug that's basically "don't crash when the user does this in exactly the right wrong way", and it'd be nice to have a warning so that they fix their code.

Reattaching Alexander's patch.

Jordan


On Feb 11, 2013, at 8:14 , Alexander Zinenko <[email protected]> wrote:

Ping?


On 28 January 2013 23:03, Alexander Zinenko <[email protected]> wrote:
Hello!

If this patch is good enough, could someone commit it, please?


On 24 January 2013 21:55, Alexander Zinenko <[email protected]> wrote:
On 24 January 2013 04:33, Jordan Rose <[email protected]> wrote:

On Jan 23, 2013, at 14:53 , Dmitri Gribenko <[email protected]> wrote:
> I think the only reasonable false positive source for zero adjustment
> case is templates:
>
> template<typename T, typename U>
> void foo(T *t) {
>  ... reinterpret_cast<U*>(t);
> }
>
> Where T and U have some subtyping relationship.

Warning could be disabled for dependent types. 
Trivial case warning adds an extra note where the template was instantiated, though. As for me it's worth still having it enabled.
 
template.cpp:15:10: warning: 'reinterpret_cast' is used as an upcast from type 'B *' to its base type 'A *' [-Wreinterpret-updown-zero-adjustment]
  (void)*reinterpret_cast<U *>(t);
         ^~~~~~~~~~~~~~~~~~~~~~~~
template.cpp:20:3: note: in instantiation of function template specialization 'foo<B, A>' requested here
  foo<B, A>(&b);
 

Attachment: 13824.patch
Description: Binary data

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

Reply via email to