summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ASTStructuralEquivalence.cpp
diff options
context:
space:
mode:
authorGabor Marton <martongabesz@gmail.com>2019-02-08 08:55:32 +0000
committerGabor Marton <martongabesz@gmail.com>2019-02-08 08:55:32 +0000
commitfc638d64e8f0826c5206f430a6b7ef1294ead3da (patch)
treeba835ae42c42fda30d2db2c4a9002667ef8ac4e6 /clang/lib/AST/ASTStructuralEquivalence.cpp
parentee21a66a7b807150148bf61167df87a2eb1689e0 (diff)
downloadbcm5719-llvm-fc638d64e8f0826c5206f430a6b7ef1294ead3da.tar.gz
bcm5719-llvm-fc638d64e8f0826c5206f430a6b7ef1294ead3da.zip
[AST] Fix structural inequivalence of operators
Summary: Operators kind was not checked, so we reported e.g. op- to be equal with op+ Reviewers: shafik, a_sidorin, aaron.ballman Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D57902 llvm-svn: 353504
Diffstat (limited to 'clang/lib/AST/ASTStructuralEquivalence.cpp')
-rw-r--r--clang/lib/AST/ASTStructuralEquivalence.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/AST/ASTStructuralEquivalence.cpp b/clang/lib/AST/ASTStructuralEquivalence.cpp
index 9f83c5110f6..4a1f6da14e3 100644
--- a/clang/lib/AST/ASTStructuralEquivalence.cpp
+++ b/clang/lib/AST/ASTStructuralEquivalence.cpp
@@ -1650,6 +1650,12 @@ bool StructuralEquivalenceContext::CheckKindSpecificEquivalence(
}
} else if (FunctionDecl *FD1 = dyn_cast<FunctionDecl>(D1)) {
if (FunctionDecl *FD2 = dyn_cast<FunctionDecl>(D2)) {
+ if (FD1->isOverloadedOperator()) {
+ if (!FD2->isOverloadedOperator())
+ return false;
+ if (FD1->getOverloadedOperator() != FD2->getOverloadedOperator())
+ return false;
+ }
if (!::IsStructurallyEquivalent(FD1->getIdentifier(),
FD2->getIdentifier()))
return false;
OpenPOWER on IntegriCloud