From 5807952ef7bc9252eca7fa11a16454af59576a12 Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Sun, 22 Oct 2017 11:57:44 +0200 Subject: loplugin:redundantcast: Do warn about convoluted dynamic_cast to self ...that the compiler is free to elide anyway. (See 4e7ffc0a69dac31ca7e0f1649f1697a1ff8d6e5f "Avoid compiler eliding#redundant dynamic_cast" and 380d6afe5fd691f6ad4b17fc38b79b9fca4ba906 "Remove redundant asserts involving dynamic_cast".) Change-Id: I3f75154fee3e978b7ba95a5a27589417065599bd --- compilerplugins/clang/redundantcast.cxx | 5 ----- compilerplugins/clang/test/redundantcast.cxx | 4 ---- 2 files changed, 9 deletions(-) diff --git a/compilerplugins/clang/redundantcast.cxx b/compilerplugins/clang/redundantcast.cxx index c28878e9e536..c86d7dc1ab73 100644 --- a/compilerplugins/clang/redundantcast.cxx +++ b/compilerplugins/clang/redundantcast.cxx @@ -682,11 +682,6 @@ bool RedundantCast::VisitCXXDynamicCastExpr(CXXDynamicCastExpr const * expr) { if (ignoreLocation(expr)) { return true; } - // ignore dynamic_cast(static_cast(void*)), it's necessary - if (auto subStaticCast = dyn_cast(expr->getSubExpr())) { - if (loplugin::TypeCheck(subStaticCast->getSubExpr()->getType()).Pointer().Void()) - return true; - } // so far this only deals with dynamic casting from T to T auto const sub = compat::getSubExprAsWritten(expr); auto const t1 = expr->getTypeAsWritten(); diff --git a/compilerplugins/clang/test/redundantcast.cxx b/compilerplugins/clang/test/redundantcast.cxx index 38c44f837cbc..20578079c2cb 100644 --- a/compilerplugins/clang/test/redundantcast.cxx +++ b/compilerplugins/clang/test/redundantcast.cxx @@ -333,15 +333,11 @@ void testDynamicCast() { S1 * s1 = nullptr; S2 * s2 = nullptr; - void * v1 = nullptr; (void) dynamic_cast(s1); (void) dynamic_cast(s2); (void) dynamic_cast(s2); // expected-error {{redundant dynamic cast from 'S2 *' to 'S2 *' [loplugin:redundantcast]}} (void) dynamic_cast(s2); - // used in some assert in vcl - (void) dynamic_cast(static_cast(v1)); - (void) dynamic_cast(static_cast(s1)); // expected-error {{redundant dynamic cast from 'S2 *' to 'S2 *' [loplugin:redundantcast]}} } int main() { -- cgit