summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-09-01 20:37:18 +0000
committerAnders Carlsson <andersca@mac.com>2009-09-01 20:37:18 +0000
commit6904f644e77d85ed43813005a5c82a05315be6b3 (patch)
treed93bea5963fcae2b058b3ee4ae62f9275e44afab /clang
parent339c82df85549ac6bb7cf0e085fd9e140e807b85 (diff)
downloadbcm5719-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.h3
-rw-r--r--clang/lib/AST/StmtDumper.cpp3
-rw-r--r--clang/lib/Sema/SemaExpr.cpp3
-rw-r--r--clang/lib/Sema/SemaExprCXX.cpp2
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:
OpenPOWER on IntegriCloud