summaryrefslogtreecommitdiffstats
path: root/compilerplugins/clang/externandnotdefined.cxx
Commit message (Collapse)AuthorAgeFilesLines
* make (some) clang plugins share the same RecursiveASTVisitorLuboš Luňák2019-03-121-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Each plugin currently uses its own recursive AST run, which adds up. This patch adds another shared plugin which internally contains all (suitable) plugins and dispatches to them from the same one recursive run. This patch converts ~25 plugins and for starmath's accessibility.cxx reduces clang build time from 5.43s to 5.14s (and it's 4.39s without any plugins). As there are almost 50 more plugins to go, this can theoretically result in 4.56s final time, although probably not all plugins can be that easily converted, if at all. This mostly requires very little change in many plugins (see e.g. BadStatics), some even work without any functionality change (e.g. CharRightShift). Traverse* calls require some changes but are often not that difficult. WalkUp* probably can't be supported, although some plugins can(?) possibly be adjusted to not rely on them. And of course some plugins can be left as they are, using their own recursive run. See description at the top of generator.cxx for description of how to convert a plugin. The sharedvisitor.cxx source is generated based on scanning relevant plugin sources using a clang-based scanner/generator. The generated source is intentionally included instead of getting always generated, as the generating currently takes some time, so it should get updated in git whenever a change in a plugin triggers a source change in it. Change-Id: Ia0d2e3a5a464659503dbb4ed6c20b6cc89b4de01 Reviewed-on: https://gerrit.libreoffice.org/68026 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
* Remove unused YYWarning functions (cargo cult?)Stephan Bergmann2019-02-281-1/+1
| | | | | | | Change-Id: I9cb03530150ee35bdaee4920dd2e818007a0a658 Reviewed-on: https://gerrit.libreoffice.org/68469 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
* filter out some of the AST in the pluginsNoel Grandin2018-08-141-2/+2
| | | | | | | | | | 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>
* compilerplugins: try to make these work with icecreamMichael Stahl2018-07-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | There are some problems here, this should fix one of them: the getFilename function returns "<stdin>" for spelling locations, because the input to clang is sort of preprocessed via -frewrite-includes if icecream is used and the file is built on a remote host (whereas it's apparently not preprocessed if the file is compiled locally by icecream). Using getPresumedLoc() uses the #line directives in the preprocessed input, which avoids the problem but is more expensive, so try to use it only when necessary. The getFileEntry(getMainFileID())->getName() pattern will also result in "<stdin>", but fortunately icecream passes -main-file-name, which oddly enough isn't used by the SourceManager's spelling locations, but is available separately via CodeGenOptions. This builds everything successfully with clang version 6.0.0: ICECC_PREFERRED_HOST=myremote make check gb_SUPPRESS_TESTS=t Change-Id: Ic121511683e5302d7b9d85186c8b9c4a5443fa1b Reviewed-on: https://gerrit.libreoffice.org/54993 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
* Clean away temporarily added using declarationsStephan Bergmann2017-11-071-1/+1
| | | | Change-Id: I26734c13515394162d88351a1cbe2b20abdac865
* reformat some loplugin codeNoel Grandin2017-06-201-1/+1
| | | | | | | | to match our more normal conventions. Also drop the 'using std' and some other cruft Change-Id: I02ef81c5427188bc03a20b157a57a900a9d7bf0d
* Adapt pathname checks to mixed usage of \ and / on WindowsStephan Bergmann2017-05-181-1/+1
| | | | Change-Id: I91bc89a9076c6642e06b238f65f2d31a1d20c6b5
* Remove support for Clang < 3.4Stephan Bergmann2016-06-291-2/+2
| | | | Change-Id: I81e97c5f720535b33dd3ce72d01151765e4e93a0
* Remove support for Clang < 3.3Stephan Bergmann2016-06-291-1/+1
| | | | Change-Id: I185852a738bac10dc6d331afccfcbc7ae1225cb1
* fix for running externandnotdefined plugin on UbuntuNoel Grandin2014-07-291-2/+1
| | | | Change-Id: I00804b2dd63df44478a14a3eaf2fdcd4e4ce5d09
* new loplugin: externalandnotdefinedNoel Grandin2014-07-111-0/+79
Find "missing headers," where a function is declared directly in the .cxx (as extern) and not defined, and should arguably instead be declared in an include file. Change-Id: I6d83ee432b2ab0cd050aec2b27c3658d32ac02a2