]> granicus.if.org Git - clang/commitdiff
Add a CK_FunctionToPointerDecay cast kind.
authorAnders Carlsson <andersca@mac.com>
Tue, 1 Sep 2009 20:37:18 +0000 (20:37 +0000)
committerAnders Carlsson <andersca@mac.com>
Tue, 1 Sep 2009 20:37:18 +0000 (20:37 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80719 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/Expr.h
lib/AST/StmtDumper.cpp
lib/Sema/SemaExpr.cpp
lib/Sema/SemaExprCXX.cpp

index 793eb1edc69fb3f4e70315b67fea760a09ec4e82..750b72cbcf0ae26666d886eddda811ab26915af4 100644 (file)
@@ -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,
     
index 720188377d5d01bb4e037068294387c6810af795..7d8d64cb63ab22fbc00fa17b6cde690478d330d3 100644 (file)
@@ -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;
index d272be97654a9195313a73c919993875f1881d38..c01097e363c11707ed951962c416d53f548aa07d 100644 (file)
@@ -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
index 35938260c6564f9b9579eaf1af7cb343c868e7de..0dc4b8d180042fcd5aa492dac7cc004f0cd137d8 100644 (file)
@@ -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: