summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ItaniumMangle.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2016-10-24 20:29:40 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2016-10-24 20:29:40 +0000
commit4631be74027bf2fcaea44c3a30758b2fdcacf6c8 (patch)
tree39930e2c25c400e065d6aab91c429f3e062117b5 /clang/lib/AST/ItaniumMangle.cpp
parentc968297b952739f33e48746f4bb53eef10372cd4 (diff)
downloadbcm5719-llvm-4631be74027bf2fcaea44c3a30758b2fdcacf6c8.tar.gz
bcm5719-llvm-4631be74027bf2fcaea44c3a30758b2fdcacf6c8.zip
Fix mangling of implicit calls to operator-> to only include a single "pt",
rather than including an extra one for each level of 'operator->()' invoked. llvm-svn: 285015
Diffstat (limited to 'clang/lib/AST/ItaniumMangle.cpp')
-rw-r--r--clang/lib/AST/ItaniumMangle.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp
index db0df363c0c..15eb11106a9 100644
--- a/clang/lib/AST/ItaniumMangle.cpp
+++ b/clang/lib/AST/ItaniumMangle.cpp
@@ -3735,7 +3735,10 @@ recurse:
case Expr::CXXOperatorCallExprClass: {
const CXXOperatorCallExpr *CE = cast<CXXOperatorCallExpr>(E);
unsigned NumArgs = CE->getNumArgs();
- mangleOperatorName(CE->getOperator(), /*Arity=*/NumArgs);
+ // A CXXOperatorCallExpr for OO_Arrow models only semantics, not syntax
+ // (the enclosing MemberExpr covers the syntactic portion).
+ if (CE->getOperator() != OO_Arrow)
+ mangleOperatorName(CE->getOperator(), /*Arity=*/NumArgs);
// Mangle the arguments.
for (unsigned i = 0; i != NumArgs; ++i)
mangleExpression(CE->getArg(i));
OpenPOWER on IntegriCloud