summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ItaniumMangle.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2015-02-19 21:41:48 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2015-02-19 21:41:48 +0000
commit67a8ec6258c68a0584ded451329740350b544f84 (patch)
treea7028b08826cd2d35b4090d3977eceb43e916b91 /clang/lib/AST/ItaniumMangle.cpp
parentcbdbf3988129b892d63c619fef576a5d7ccb5180 (diff)
downloadbcm5719-llvm-67a8ec6258c68a0584ded451329740350b544f84.tar.gz
bcm5719-llvm-67a8ec6258c68a0584ded451329740350b544f84.zip
Itanium ABI: Pack expansions change the arity of expressions to unknown
llvm-svn: 229918
Diffstat (limited to 'clang/lib/AST/ItaniumMangle.cpp')
-rw-r--r--clang/lib/AST/ItaniumMangle.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp
index f4fee77925b..95fca001250 100644
--- a/clang/lib/AST/ItaniumMangle.cpp
+++ b/clang/lib/AST/ItaniumMangle.cpp
@@ -2796,9 +2796,14 @@ recurse:
Out << "cl";
}
- mangleExpression(CE->getCallee(), CE->getNumArgs());
- for (unsigned I = 0, N = CE->getNumArgs(); I != N; ++I)
- mangleExpression(CE->getArg(I));
+ unsigned CallArity = CE->getNumArgs();
+ for (const Expr *Arg : CE->arguments())
+ if (isa<PackExpansionExpr>(Arg))
+ CallArity = UnknownArity;
+
+ mangleExpression(CE->getCallee(), CallArity);
+ for (const Expr *Arg : CE->arguments())
+ mangleExpression(Arg);
Out << 'E';
break;
}
OpenPOWER on IntegriCloud