diff options
author | David Majnemer <david.majnemer@gmail.com> | 2015-02-19 21:41:48 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2015-02-19 21:41:48 +0000 |
commit | 67a8ec6258c68a0584ded451329740350b544f84 (patch) | |
tree | a7028b08826cd2d35b4090d3977eceb43e916b91 /clang/lib/AST/ItaniumMangle.cpp | |
parent | cbdbf3988129b892d63c619fef576a5d7ccb5180 (diff) | |
download | bcm5719-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.cpp | 11 |
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; } |