Improve loplugin:redundantpreprocessor performance a bit
...and add a minimal test for it Change-Id: Ia6c61e41a7e60fd01c639e893c34bd9d215c1513 Reviewed-on: https://gerrit.libreoffice.org/82983 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
This commit is contained in:
parent
b699a693ca
commit
24b69e95c6
3 changed files with 20 additions and 4 deletions
|
@ -69,9 +69,9 @@ void RedundantPreprocessor::Ifdef(clang::SourceLocation aLoc, const clang::Token
|
|||
if (ignoreLocation(aLoc))
|
||||
return;
|
||||
|
||||
std::string aMacroName = m_rPP.getSpelling(rMacroNameTok);
|
||||
if (m_rPP.getSourceManager().isInMainFile(aLoc))
|
||||
{
|
||||
std::string aMacroName = m_rPP.getSpelling(rMacroNameTok);
|
||||
for (const auto& rEntry : m_aDefStack)
|
||||
{
|
||||
if (rEntry.m_aMacroName == aMacroName)
|
||||
|
@ -84,7 +84,7 @@ void RedundantPreprocessor::Ifdef(clang::SourceLocation aLoc, const clang::Token
|
|||
|
||||
Entry aEntry;
|
||||
aEntry.m_aLoc = aLoc;
|
||||
aEntry.m_aMacroName = m_rPP.getSpelling(rMacroNameTok);
|
||||
aEntry.m_aMacroName = aMacroName;
|
||||
m_aDefStack.push_back(aEntry);
|
||||
}
|
||||
|
||||
|
@ -94,9 +94,9 @@ void RedundantPreprocessor::Ifndef(clang::SourceLocation aLoc, const clang::Toke
|
|||
if (ignoreLocation(aLoc))
|
||||
return;
|
||||
|
||||
std::string aMacroName = m_rPP.getSpelling(rMacroNameTok);
|
||||
if (m_rPP.getSourceManager().isInMainFile(aLoc))
|
||||
{
|
||||
std::string aMacroName = m_rPP.getSpelling(rMacroNameTok);
|
||||
for (const auto& rEntry : m_aNotDefStack)
|
||||
{
|
||||
if (rEntry.m_aMacroName == aMacroName)
|
||||
|
@ -109,7 +109,7 @@ void RedundantPreprocessor::Ifndef(clang::SourceLocation aLoc, const clang::Toke
|
|||
|
||||
Entry aEntry;
|
||||
aEntry.m_aLoc = aLoc;
|
||||
aEntry.m_aMacroName = m_rPP.getSpelling(rMacroNameTok);
|
||||
aEntry.m_aMacroName = aMacroName;
|
||||
m_aNotDefStack.push_back(aEntry);
|
||||
}
|
||||
|
||||
|
|
15
compilerplugins/clang/test/redundantpreprocessor.cxx
Normal file
15
compilerplugins/clang/test/redundantpreprocessor.cxx
Normal file
|
@ -0,0 +1,15 @@
|
|||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
|
||||
/*
|
||||
* This file is part of the LibreOffice project.
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
#ifdef __clang__ // expected-note {{previous ifdef [loplugin:redundantpreprocessor]}}
|
||||
#ifdef __clang__ // expected-error {{nested ifdef [loplugin:redundantpreprocessor]}}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
|
|
@ -59,6 +59,7 @@ $(eval $(call gb_CompilerTest_add_exception_objects,compilerplugins_clang, \
|
|||
compilerplugins/clang/test/redundantfcast \
|
||||
compilerplugins/clang/test/redundantinline \
|
||||
compilerplugins/clang/test/redundantpointerops \
|
||||
compilerplugins/clang/test/redundantpreprocessor \
|
||||
compilerplugins/clang/test/refcounting \
|
||||
compilerplugins/clang/test/referencecasting \
|
||||
compilerplugins/clang/test/returnconstval \
|
||||
|
|
Loading…
Reference in a new issue