summaryrefslogtreecommitdiff
path: root/compilerplugins/clang/fakebool.cxx
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2020-07-19 14:53:29 +0200
committerStephan Bergmann <sbergman@redhat.com>2020-07-19 23:05:57 +0200
commit5d546de67b44dec23ecfa5a6378e2968912f8253 (patch)
tree811691579249f4e70783f239cec9acc312e9785c /compilerplugins/clang/fakebool.cxx
parent46bfb9da866c2e7bb37c7f5d8980f378c52f79f8 (diff)
Adapt to Clang 12 trunk RecursiveASTVisitor change
<https://github.com/llvm/llvm-project/commit/ 5689b38c6a4220cc5f6ba68a56486229b10071bf> "Removed a RecursiveASTVisitor feature to visit operator kinds with different methods". That change is incompatible in that before the change individual TraverseUnary* and TraverseBin* functions were called, while now TraverseUnaryOperator and TraverseBinaryOperator/TraverseCompoundAssignOperator are called for all the different operators. Fixed that with a few #if for the non-shared plugins, but that doesn't work for the shared plugin. So made the two affected plugins non- shared for now and left a better fix as a TODO. Change-Id: I5b87d329ae2c4c93bf605bb1ecc9641039f014a3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99000 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'compilerplugins/clang/fakebool.cxx')
-rw-r--r--compilerplugins/clang/fakebool.cxx9
1 files changed, 6 insertions, 3 deletions
diff --git a/compilerplugins/clang/fakebool.cxx b/compilerplugins/clang/fakebool.cxx
index f50116b8ee88..804f1d51afa1 100644
--- a/compilerplugins/clang/fakebool.cxx
+++ b/compilerplugins/clang/fakebool.cxx
@@ -184,7 +184,7 @@ public:
virtual void run() override;
- bool VisitUnaryAddrOf(UnaryOperator const * op);
+ bool VisitUnaryOperator(UnaryOperator * op);
bool VisitCallExpr(CallExpr * expr);
@@ -446,8 +446,11 @@ void FakeBool::run() {
}
}
-bool FakeBool::VisitUnaryAddrOf(UnaryOperator const * op) {
- FunctionAddress::VisitUnaryAddrOf(op);
+bool FakeBool::VisitUnaryOperator(UnaryOperator * op) {
+ if (op->getOpcode() != UO_AddrOf) {
+ return FunctionAddress::VisitUnaryOperator(op);
+ }
+ FunctionAddress::VisitUnaryOperator(op);
Expr const * e1 = op->getSubExpr()->IgnoreParenCasts();
if (isFakeBool(e1->getType()) != FBK_No) {
if (DeclRefExpr const * e2 = dyn_cast<DeclRefExpr>(e1)) {