summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/Mangle.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2010-02-03 00:55:45 +0000
committerJohn McCall <rjmccall@apple.com>2010-02-03 00:55:45 +0000
commit2adddcae7ed197ec163d5bd52283ec457657cf86 (patch)
treebd8440d01432d745de943d4b09b2b28d922f964b /clang/lib/CodeGen/Mangle.cpp
parentdee74e2805bc9f7210aca7f65e47f0658432d39b (diff)
downloadbcm5719-llvm-2adddcae7ed197ec163d5bd52283ec457657cf86.tar.gz
bcm5719-llvm-2adddcae7ed197ec163d5bd52283ec457657cf86.zip
Remove abstract expression kinds from the StmtClass enum. Update a few users
appropriately. Call out a few missing cases in the expression mangler. llvm-svn: 95176
Diffstat (limited to 'clang/lib/CodeGen/Mangle.cpp')
-rw-r--r--clang/lib/CodeGen/Mangle.cpp29
1 files changed, 23 insertions, 6 deletions
diff --git a/clang/lib/CodeGen/Mangle.cpp b/clang/lib/CodeGen/Mangle.cpp
index 93b9a8fbc7e..4f84edd908b 100644
--- a/clang/lib/CodeGen/Mangle.cpp
+++ b/clang/lib/CodeGen/Mangle.cpp
@@ -1056,21 +1056,38 @@ void CXXNameMangler::mangleIntegerLiteral(QualType T,
void CXXNameMangler::mangleExpression(const Expr *E) {
// <expression> ::= <unary operator-name> <expression>
- // ::= <binary operator-name> <expression> <expression>
- // ::= <trinary operator-name> <expression> <expression> <expression>
- // ::= cl <expression>* E # call
+ // ::= <binary operator-name> <expression> <expression>
+ // ::= <trinary operator-name> <expression> <expression> <expression>
+ // ::= cl <expression>* E # call
// ::= cv <type> expression # conversion with one argument
// ::= cv <type> _ <expression>* E # conversion with a different number of arguments
- // ::= st <type> # sizeof (a type)
+ // ::= st <type> # sizeof (a type)
// ::= at <type> # alignof (a type)
// ::= <template-param>
// ::= <function-param>
// ::= sr <type> <unqualified-name> # dependent name
// ::= sr <type> <unqualified-name> <template-args> # dependent template-id
// ::= sZ <template-param> # size of a parameter pack
- // ::= <expr-primary>
+ // ::= <expr-primary>
switch (E->getStmtClass()) {
- default: assert(false && "Unhandled expression kind!");
+ default:
+ llvm_unreachable("unexpected statement kind");
+ break;
+
+ case Expr::CallExprClass:
+ // FIXME: implement
+ llvm_unreachable("mangling not implemented for calls");
+ break;
+
+ case Expr::CXXConstructExprClass:
+ // FIXME: implement
+ llvm_unreachable("mangling not implemented for construct exprs");
+ break;
+
+ case Expr::SizeOfAlignOfExprClass:
+ // FIXME: implement
+ llvm_unreachable("mangling not implemented for sizeof/alignof");
+ break;
case Expr::UnaryOperatorClass: {
const UnaryOperator *UO = cast<UnaryOperator>(E);
OpenPOWER on IntegriCloud