diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-01-29 16:37:09 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-01-29 16:37:09 +0000 |
commit | 16810ca647b99393ebb6141fa079b78ac883f23e (patch) | |
tree | d11fc209337b09f1bef4184c7bfc1acc8f28fd26 /clang/lib/CodeGen/Mangle.cpp | |
parent | 37aa4508e2d3e331314eb086478321333b704b5d (diff) | |
download | bcm5719-llvm-16810ca647b99393ebb6141fa079b78ac883f23e.tar.gz bcm5719-llvm-16810ca647b99393ebb6141fa079b78ac883f23e.zip |
Name mangling for cast expressions, from Matthias Schiffer! Fixes PR5876.
llvm-svn: 94811
Diffstat (limited to 'clang/lib/CodeGen/Mangle.cpp')
-rw-r--r-- | clang/lib/CodeGen/Mangle.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/Mangle.cpp b/clang/lib/CodeGen/Mangle.cpp index b6bebd0247b..93b9a8fbc7e 100644 --- a/clang/lib/CodeGen/Mangle.cpp +++ b/clang/lib/CodeGen/Mangle.cpp @@ -1098,6 +1098,24 @@ void CXXNameMangler::mangleExpression(const Expr *E) { break; } + case Expr::ImplicitCastExprClass: { + mangleExpression(cast<ImplicitCastExpr>(E)->getSubExpr()); + break; + } + + case Expr::CStyleCastExprClass: + case Expr::CXXStaticCastExprClass: + case Expr::CXXDynamicCastExprClass: + case Expr::CXXReinterpretCastExprClass: + case Expr::CXXConstCastExprClass: + case Expr::CXXFunctionalCastExprClass: { + const ExplicitCastExpr *ECE = cast<ExplicitCastExpr>(E); + Out << "cv"; + mangleType(ECE->getType()); + mangleExpression(ECE->getSubExpr()); + break; + } + case Expr::CXXOperatorCallExprClass: { const CXXOperatorCallExpr *CE = cast<CXXOperatorCallExpr>(E); unsigned NumArgs = CE->getNumArgs(); |