Index: lib/AST/ItaniumMangle.cpp |
diff --git a/lib/AST/ItaniumMangle.cpp b/lib/AST/ItaniumMangle.cpp |
index 6e55655d85bba9678c445cb6b6446d5c1662fa49..0458cce64d86b3ac2c256e149e09512a082281fc 100644 |
--- a/lib/AST/ItaniumMangle.cpp |
+++ b/lib/AST/ItaniumMangle.cpp |
@@ -2884,9 +2884,9 @@ recurse: |
case Expr::UnresolvedMemberExprClass: { |
const UnresolvedMemberExpr *ME = cast<UnresolvedMemberExpr>(E); |
- mangleMemberExpr(ME->getBase(), ME->isArrow(), |
- ME->getQualifier(), nullptr, ME->getMemberName(), |
- Arity); |
+ mangleMemberExpr(ME->isImplicitAccess() ? nullptr : ME->getBase(), |
+ ME->isArrow(), ME->getQualifier(), nullptr, |
+ ME->getMemberName(), Arity); |
if (ME->hasExplicitTemplateArgs()) |
mangleTemplateArgs(ME->getExplicitTemplateArgs()); |
break; |
@@ -2895,8 +2895,9 @@ recurse: |
case Expr::CXXDependentScopeMemberExprClass: { |
const CXXDependentScopeMemberExpr *ME |
= cast<CXXDependentScopeMemberExpr>(E); |
- mangleMemberExpr(ME->getBase(), ME->isArrow(), |
- ME->getQualifier(), ME->getFirstQualifierFoundInScope(), |
+ mangleMemberExpr(ME->isImplicitAccess() ? nullptr : ME->getBase(), |
+ ME->isArrow(), ME->getQualifier(), |
+ ME->getFirstQualifierFoundInScope(), |
ME->getMember(), Arity); |
if (ME->hasExplicitTemplateArgs()) |
mangleTemplateArgs(ME->getExplicitTemplateArgs()); |