diff options
| author | Anders Carlsson <andersca@mac.com> | 2009-09-01 20:37:18 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2009-09-01 20:37:18 +0000 |
| commit | 6904f644e77d85ed43813005a5c82a05315be6b3 (patch) | |
| tree | d93bea5963fcae2b058b3ee4ae62f9275e44afab /clang | |
| parent | 339c82df85549ac6bb7cf0e085fd9e140e807b85 (diff) | |
| download | bcm5719-llvm-6904f644e77d85ed43813005a5c82a05315be6b3.tar.gz bcm5719-llvm-6904f644e77d85ed43813005a5c82a05315be6b3.zip | |
Add a CK_FunctionToPointerDecay cast kind.
llvm-svn: 80719
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/include/clang/AST/Expr.h | 3 | ||||
| -rw-r--r-- | clang/lib/AST/StmtDumper.cpp | 3 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 3 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaExprCXX.cpp | 2 |
4 files changed, 9 insertions, 2 deletions
diff --git a/clang/include/clang/AST/Expr.h b/clang/include/clang/AST/Expr.h index 793eb1edc69..750b72cbcf0 100644 --- a/clang/include/clang/AST/Expr.h +++ b/clang/include/clang/AST/Expr.h @@ -1347,6 +1347,9 @@ public: /// CK_ArrayToPointerDecay - Array to pointer decay. CK_ArrayToPointerDecay, + // CK_FunctionToPointerDecay - Function to pointer decay. + CK_FunctionToPointerDecay, + /// CK_NullToMemberPointer - Null pointer to member pointer. CK_NullToMemberPointer, diff --git a/clang/lib/AST/StmtDumper.cpp b/clang/lib/AST/StmtDumper.cpp index 720188377d5..7d8d64cb63a 100644 --- a/clang/lib/AST/StmtDumper.cpp +++ b/clang/lib/AST/StmtDumper.cpp @@ -324,6 +324,9 @@ void StmtDumper::VisitCastExpr(CastExpr *Node) { case CastExpr::CK_ArrayToPointerDecay: fprintf(F, "<ArrayToPointerDecay>"); break; + case CastExpr::CK_FunctionToPointerDecay: + fprintf(F, "<FunctionToPointerDecay>"); + break; case CastExpr::CK_NullToMemberPointer: fprintf(F, "<NullToMemberPointer>"); break; diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index d272be97654..c01097e363c 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -196,7 +196,8 @@ void Sema::DefaultFunctionArrayConversion(Expr *&E) { assert(!Ty.isNull() && "DefaultFunctionArrayConversion - missing type"); if (Ty->isFunctionType()) - ImpCastExprToType(E, Context.getPointerType(Ty)); + ImpCastExprToType(E, Context.getPointerType(Ty), + CastExpr::CK_FunctionToPointerDecay); else if (Ty->isArrayType()) { // In C90 mode, arrays only promote to pointers if the array expression is // an lvalue. The relevant legalese is C90 6.2.2.1p3: "an lvalue that has diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index 35938260c65..0dc4b8d1800 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -1016,7 +1016,7 @@ Sema::PerformImplicitConversion(Expr *&From, QualType ToType, FromType = From->getType(); } FromType = Context.getPointerType(FromType); - ImpCastExprToType(From, FromType); + ImpCastExprToType(From, FromType, CastExpr::CK_FunctionToPointerDecay); break; default: |

