[Libreoffice-commits] core.git: compilerplugins/clang

Stephan Bergmann sbergman at redhat.com
Sun Oct 22 10:00:18 UTC 2017


 compilerplugins/clang/redundantcast.cxx      |    5 -----
 compilerplugins/clang/test/redundantcast.cxx |    4 ----
 2 files changed, 9 deletions(-)

New commits:
commit 5807952ef7bc9252eca7fa11a16454af59576a12
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Sun Oct 22 11:57:44 2017 +0200

    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

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<T1>(static_cast<T1>(void*)), it's necessary
-    if (auto subStaticCast = dyn_cast<CXXStaticCastExpr>(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<S2 *>(s1);
     (void) dynamic_cast<S1 *>(s2);
     (void) dynamic_cast<S2 *>(s2); // expected-error {{redundant dynamic cast from 'S2 *' to 'S2 *' [loplugin:redundantcast]}}
     (void) dynamic_cast<S3 *>(s2);
-    // used in some assert in vcl
-    (void) dynamic_cast<S1 *>(static_cast<S1*>(v1));
-    (void) dynamic_cast<S2 *>(static_cast<S2*>(s1));  // expected-error {{redundant dynamic cast from 'S2 *' to 'S2 *' [loplugin:redundantcast]}}
 }
 
 int main() {


More information about the Libreoffice-commits mailing list