diff options
| author | Anders Carlsson <andersca@mac.com> | 2009-10-18 20:31:03 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2009-10-18 20:31:03 +0000 |
| commit | 9500ad13b0b22bc5e8730aa1d3472f9f5349fefd (patch) | |
| tree | af9b821b4c68eb992de8452a74adfe73b92151e5 /clang/lib/CodeGen | |
| parent | 70e7eadd15506498a909b3ea2bd984e987cc2667 (diff) | |
| download | bcm5719-llvm-9500ad13b0b22bc5e8730aa1d3472f9f5349fefd.tar.gz bcm5719-llvm-9500ad13b0b22bc5e8730aa1d3472f9f5349fefd.zip | |
Use CK_BitCast for member function pointer casts. Fixes PR5138.
llvm-svn: 84438
Diffstat (limited to 'clang/lib/CodeGen')
| -rw-r--r-- | clang/lib/CodeGen/CGExprAgg.cpp | 6 | ||||
| -rw-r--r-- | clang/lib/CodeGen/CGExprConstant.cpp | 6 |
2 files changed, 11 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGExprAgg.cpp b/clang/lib/CodeGen/CGExprAgg.cpp index 88fdb542f3c..066029f9a53 100644 --- a/clang/lib/CodeGen/CGExprAgg.cpp +++ b/clang/lib/CodeGen/CGExprAgg.cpp @@ -215,6 +215,12 @@ void AggExprEmitter::VisitCastExpr(CastExpr *E) { break; } + case CastExpr::CK_BitCast: { + // This must be a member function pointer cast. + Visit(E->getSubExpr()); + break; + } + case CastExpr::CK_BaseToDerivedMemberPointer: { QualType SrcType = E->getSubExpr()->getType(); diff --git a/clang/lib/CodeGen/CGExprConstant.cpp b/clang/lib/CodeGen/CGExprConstant.cpp index 7f540c3c068..fc3748c8e3c 100644 --- a/clang/lib/CodeGen/CGExprConstant.cpp +++ b/clang/lib/CodeGen/CGExprConstant.cpp @@ -542,7 +542,11 @@ public: return CS; } } - + + case CastExpr::CK_BitCast: + // This must be a member function pointer cast. + return Visit(E->getSubExpr()); + default: { // FIXME: This should be handled by the CK_NoOp cast kind. // Explicit and implicit no-op casts |

