[Libreoffice-commits] core.git: compilerplugins/clang
Noel Grandin (via logerrit)
logerrit at kemper.freedesktop.org
Sun Feb 23 10:10:51 UTC 2020
compilerplugins/clang/sequenceloop.cxx | 6 ------
compilerplugins/clang/test/sequenceloop.cxx | 9 ---------
2 files changed, 15 deletions(-)
New commits:
commit fed87058ac80ca6223c0e8221debc96c274383a9
Author: Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Fri Feb 21 15:17:47 2020 +0100
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Sun Feb 23 11:10:18 2020 +0100
Revert "loplugin:sequenceloop improve rvalue detection"
This reverts commit 3aca35f1505fa552eaa316a2d47a60ef52646525.
Reason for revert: see commentary at
https://gerrit.libreoffice.org/c/core/+/89184
I misunderstood - even though this is a local copy, we will still call non-const begin()/end() and cause further allocations internal to the Sequence
Change-Id: Ia9ecacc6312afc2c9c80ca72afe6182d9b70241b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89137
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/compilerplugins/clang/sequenceloop.cxx b/compilerplugins/clang/sequenceloop.cxx
index 9a620f26be52..7f14d6c4d951 100644
--- a/compilerplugins/clang/sequenceloop.cxx
+++ b/compilerplugins/clang/sequenceloop.cxx
@@ -63,12 +63,6 @@ bool SequenceLoop::VisitCXXForRangeStmt(CXXForRangeStmt const* forStmt)
if (!tc2.LvalueReference().Const())
return true;
- // bit awkward, but the only way to sniff out if we're being passed a value or a reference
- auto rangeDeclStmt = dyn_cast<DeclStmt>(forStmt->getRangeStmt());
- auto rangeVarDecl = dyn_cast<VarDecl>(rangeDeclStmt->getSingleDecl());
- if (rangeVarDecl->getType()->isRValueReferenceType())
- return true;
-
report(DiagnosticsEngine::Warning,
("use std::as_const, or otherwise make the for-range-initializer expression const, to"
" avoid creating a copy of the Sequence"),
diff --git a/compilerplugins/clang/test/sequenceloop.cxx b/compilerplugins/clang/test/sequenceloop.cxx
index 41cb32f0495a..e124fda27093 100644
--- a/compilerplugins/clang/test/sequenceloop.cxx
+++ b/compilerplugins/clang/test/sequenceloop.cxx
@@ -30,15 +30,6 @@ void foo2(const css::uno::Sequence<css::uno::Reference<css::uno::XInterface>>& a
for (const auto& x : aSeq)
x.get();
}
-
-css::uno::Sequence<css::uno::Reference<css::uno::XInterface>> getSequenceByValue();
-
-// no warning expected
-void foo3()
-{
- for (const auto& x : getSequenceByValue())
- x.get();
-}
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
More information about the Libreoffice-commits
mailing list