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

Luboš Luňák (via logerrit) logerrit at kemper.freedesktop.org
Sun May 5 15:45:31 UTC 2019


 compilerplugins/clang/oslendian.cxx |   17 +++++++++++++++++
 1 file changed, 17 insertions(+)

New commits:
commit acd8ee107f336d629782956350ed3981ca302024
Author:     Luboš Luňák <l.lunak at collabora.com>
AuthorDate: Mon Apr 29 22:39:00 2019 +0200
Commit:     Luboš Luňák <l.lunak at collabora.com>
CommitDate: Sun May 5 17:44:48 2019 +0200

    avoid false warnings from oslendian clang plugin if PCH is used
    
    Change-Id: I3ab8371b14068601995616dc9979a3297313d761
    Reviewed-on: https://gerrit.libreoffice.org/71563
    Tested-by: Jenkins
    Reviewed-by: Luboš Luňák <l.lunak at collabora.com>

diff --git a/compilerplugins/clang/oslendian.cxx b/compilerplugins/clang/oslendian.cxx
index 3cb1adbe3da0..13296330baf6 100644
--- a/compilerplugins/clang/oslendian.cxx
+++ b/compilerplugins/clang/oslendian.cxx
@@ -25,6 +25,22 @@ public:
 private:
     void run() override {}
 
+    virtual void FileChanged(SourceLocation, FileChangeReason, SrcMgr::CharacteristicKind, FileID) override {
+        if(!startChecked) {
+            // With precompiled headers MacroDefined() would not be called, so check already at the very
+            // start whether the macros exist.
+            startChecked = true;
+            if(const MacroInfo* macroBig = compiler.getPreprocessor().getMacroInfo(
+                &compiler.getPreprocessor().getIdentifierTable().get("OSL_BIGENDIAN"))) {
+                definedBig_ = macroBig->getDefinitionLoc();
+            }
+            if(const MacroInfo* macroLit = compiler.getPreprocessor().getMacroInfo(
+                &compiler.getPreprocessor().getIdentifierTable().get("OSL_LITENDIAN"))) {
+                definedLit_ = macroLit->getDefinitionLoc();
+            }
+        }
+    }
+
     void MacroDefined(Token const & MacroNameTok, MacroDirective const *)
         override
     {
@@ -107,6 +123,7 @@ private:
 
     SourceLocation definedBig_;
     SourceLocation definedLit_;
+    bool startChecked = false;
 };
 
 loplugin::Plugin::Registration<OslEndian> X("oslendian");


More information about the Libreoffice-commits mailing list