Use declaresSameEntity() when comparing ObjCProtocolDecls, and
getCanonicalDecl() when putting ObjCProtocolDecls into a set. This is
groundwork for making ObjCProtocolDecl redeclarable.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147406 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Rewrite/RewriteObjC.cpp b/lib/Rewrite/RewriteObjC.cpp
index 4b41e5a..1b39061 100644
--- a/lib/Rewrite/RewriteObjC.cpp
+++ b/lib/Rewrite/RewriteObjC.cpp
@@ -3085,7 +3085,7 @@
CK_BitCast,
DerefExpr);
ReplaceStmt(Exp, castExpr);
- ProtocolExprDecls.insert(Exp->getProtocol());
+ ProtocolExprDecls.insert(Exp->getProtocol()->getCanonicalDecl());
// delete Exp; leak for now, see RewritePropertyOrImplicitSetter() usage for more info.
return castExpr;
@@ -5185,7 +5185,7 @@
objc_protocol_methods = true;
}
// Do not synthesize the protocol more than once.
- if (ObjCSynthesizedProtocols.count(PDecl))
+ if (ObjCSynthesizedProtocols.count(PDecl->getCanonicalDecl()))
return;
if (PDecl->instmeth_begin() != PDecl->instmeth_end()) {
@@ -5307,7 +5307,7 @@
Result += "};\n";
// Mark this protocol as having been generated.
- if (!ObjCSynthesizedProtocols.insert(PDecl))
+ if (!ObjCSynthesizedProtocols.insert(PDecl->getCanonicalDecl()))
llvm_unreachable("protocol already synthesized");
}