summaryrefslogtreecommitdiff
path: root/compilerplugins/clang/literaltoboolconversion.cxx
AgeCommit message (Collapse)Author
2021-06-14Adapt compilerplugins to LLVM 13 APSInt::toString changeStephan Bergmann
<https://github.com/llvm/llvm-project/commit/61cdaf66fe22be2b5942ddee4f46a998b4f3ee29> "[ADT] Remove APInt/APSInt toString() std::string variants". TODO: While most uses of compat::toString should be harmless performance-wise, as they are either in error reporting code or in plugins that are not run by default, some calls like the one in compilerplugins/clang/staticconstfield.cxx might benefit from moving them away from using std::string. Change-Id: Icfac7d6d4a0a4a4edeb5c8bdcdbc13b73e20a5e5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117152 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-07-28Adapt to Clang 12 trunk Expr::getIntegerConstantExpressionStephan Bergmann
<https://github.com/llvm/llvm-project/commit/ 36036aa70ec1df7b51b5d30b2dd8090ad2b6e783> "Reapply 'Rename/refactor isIntegerConstantExpression to getIntegerConstantExpression'" Change-Id: I99277601fe7ffa3e0e5d22a4b3aaca4f51551ab3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99570 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-07-17Revert "simplify sharedplugin PostTraverse calls"Noel Grandin
This reverts commit ff55ad1aceb10b900254c8ad3629775b7789d60a, Lubos prefers it the way it was. Change-Id: I68edc21c438b6aa2fc819245dd9a3d590af3a278 Reviewed-on: https://gerrit.libreoffice.org/75790 Reviewed-by: Luboš Luňák <l.lunak@collabora.com> Tested-by: Jenkins
2019-07-17make some plugins used the shared frameworkNoel Grandin
Change-Id: Ie283a4774564f25e0fde8ca35212f92be786d671 Reviewed-on: https://gerrit.libreoffice.org/75785 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-08-14filter out some of the AST in the pluginsNoel Grandin
by checking if the current namespace decl is in our code, so we have to scan less stuff, which results in a 10% perf improvement for me Change-Id: Idf0e30d57b6d0dcd13daa9ed679c28b9d233d387 Reviewed-on: https://gerrit.libreoffice.org/58942 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-08-10Avoid -Werror=deprecated-declarations with recent Clang trunkStephan Bergmann
...which first added alternative names to and then deprecated getLocBegin/End Change-Id: Iaefb8ce259057abfa6cd20f0b63c0ef2949a96b2 Reviewed-on: https://gerrit.libreoffice.org/58820 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-05-04Adapt to Clang trunk SourceManager::getImmediateExpansionRange changesStephan Bergmann
...of <http://llvm.org/viewvc/llvm-project?view=revision&revision=331155> "PR37189 Fix incorrect end source location and spelling for a split '>>' token", changing (among others) the return type of getImmediateExpansionRange from a std::pair of token locations to CharSourceRange (which will typically also represent token locations, but might also represent char locations). For now, map the return value of getImmediateExpansionRange back to a std::pair (as expected by our compilerplugins code in its current form), and mark the char location case with a TODO (which will need to be addressed if any of our plugins starts to produce wrong results due to not handling that char location case). In the long run, we should instead adapt our code to use the new return type of getImmediateExpansionRange directly. Change-Id: Idc2f5dc43830af4798b55bf605976c4ab146c522 Reviewed-on: https://gerrit.libreoffice.org/53817 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-11-07Clean away temporarily added using declarationsStephan Bergmann
Change-Id: I26734c13515394162d88351a1cbe2b20abdac865
2016-12-14Disambiguate clang::StringLiteralStephan Bergmann
...vs. recently introduced llvm::StringLiteral (llvm/ADT/StringRef.h) Change-Id: I4d74546b0d1401a74b0c15368bbc93794ecd0b1d
2016-07-11loplugin:literaltoboolconversion: Better heuristic...Stephan Bergmann
to determine code shared between C and C++ Change-Id: Ib1f3892b388ebd6a67cc88831a99dfb4ccdfbc2f
2016-06-29Remove support for Clang < 3.4Stephan Bergmann
Change-Id: I81e97c5f720535b33dd3ce72d01151765e4e93a0
2016-06-29Remove support for Clang < 3.3Stephan Bergmann
Change-Id: I185852a738bac10dc6d331afccfcbc7ae1225cb1
2015-11-02tdf#94269: Replace "n" prefix for bool variables with "b"Benjamin Ni
Change-Id: I178545792c7354a362658ac7ef8b1d4cf0865797 Signed-off-by: Michael Stahl <mstahl@redhat.com>
2015-04-23Improved loplugin:literaltoboolconversion looking into cond. exprs.Stephan Bergmann
Change-Id: If54ab99fc82c7895da6bb88ebf18a11570f597ed
2015-03-28Clean up isMacroBodyExpansionStephan Bergmann
Change-Id: I745b320dd5f44d54371d8a0b961c49793e3e0ad6
2015-03-27new clang plugin: staticmethodsNoel Grandin
Genius suggestion from Tor Lillqvist, write a clang plugin that finds methods that can be static. Change-Id: Ie6684cc95d088e8750b300a028b49f763da00345
2015-03-02Missing initializationStephan Bergmann
Change-Id: I45eabbe9d1a4e3f85f16c2869c4031fc06f5ef31
2015-03-02plugin:literaltoboolconversion: Recurse into comma operator's rhsStephan Bergmann
...inspired by <http://www.viva64.com/en/b/0308/#ID0EE4BI>'s V639 finding. Change-Id: I3b49f00dd4a593ed0b94d81398fa89ff64f6c79b
2014-12-21Don't call isIntegerConstantExpr if isValueDependentStephan Bergmann
...some paths trough clang::Expr::isIntegerConstantExpr (esp. if non-CPlusPlus11) assert the assumption that the given expr is not value-dependent, so it appears to be a prereq Change-Id: Ibc5fe472ea3f91b31c8cb7f06c4b7c7f4d6831a3
2014-09-15do not warn about "null pointer conversions" from integers in C++98 modeLuboš Luňák
Change-Id: I15c7f52c542549ad131400c9b5395a06a4777687
2014-04-02Add compat::isInMainFileStephan Bergmann
Change-Id: I0e155c6c68a43020110a8e1c0cb29cabdcade454
2014-03-23fix filename detection in clang pluginsLuboš Luňák
SourceManager::getFilename() returns "<stdin>" whenever icecream is used. Change-Id: I4e3e1b90880c5fd2b53f20e4ce3e38e3a0486973
2014-02-25isIntegerConstantExpr is more general than IntegerLiteralStephan Bergmann
...and subsumes not only the use of __builtin_expect in assert, but also the use of __builtin_constant_p (nested) in htonl on Mac OS X. Change-Id: I62ab6c71c42948c4ec1e2f1e1d23223cbb13416b
2014-02-21Adapt to Clang <= 3.4Stephan Bergmann
Change-Id: If9c9d63d85ce29629e6453f2d69355bd64ac2fc5
2014-02-21Special handling of __builtin_expect in boolean expressionsStephan Bergmann
...as found in Mac OS X' assert macro definition, __builtin_expect(!(e), 0) ? ... : ... with type long __builtin_expect(long, long) The code in literaltoboolconversion.cxx is needed for assert(false); Change-Id: I42f87482c56986af74b2ec849db9852f74c7c938
2014-01-30literaltobool conversion plugin, reduce spurious warnings with clang 3.3Noel Grandin
It appears that clang 3.3 also generates spurious warnings, so adjust the ifdef Change-Id: Idb57f7eafd55effd4c7c8b1f96c03c2ea6ddaba3
2014-01-29Further fix for old Clang versionsStephan Bergmann
...maybe this needs adaption for 3.3 or 3.4 too, known to work with trunk towards 3.5. Change-Id: I9f05ae44e4a49ae51df69d5a3c1df5eb371a1c87
2014-01-29Fix for old Clang versionsStephan Bergmann
Change-Id: Ib902535c03a9f1b93a2c4ff3dd61d29e316bfd49
2014-01-28Clang plugin to warn about implicit conversion of literals to boolStephan Bergmann
...which warns about apparent errors like n == KIND_FOO || KIND_BAR that should have read n == KIND_FOO || n == KIND_BAR It also warns about trivial (mis-)uses of 0/1 and sal_False/True like while (1) { ... } instead of while (true) { ... } which it can automatically rewrite. It does not warn if the relevant code is inside a macro in a .h (i.e., C) include file, nor when a string literal is used in the assert macro like assert(!"this cannot happen"); Change-Id: If8c305a25e5da15e78f6139b5b0c0e868f06d4f3