summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaOverload.cpp
diff options
context:
space:
mode:
authorFrancois Pichet <pichet2000@gmail.com>2011-05-08 22:52:41 +0000
committerFrancois Pichet <pichet2000@gmail.com>2011-05-08 22:52:41 +0000
commitbc6ebb5b76827a10a3c77f037acf499f4a29adc6 (patch)
treef8385cba047c87c8d209a960d56908018ebc8ebe /clang/lib/Sema/SemaOverload.cpp
parentc36783e8b9ace10c9e5c95c85deb8a615e7a5f61 (diff)
downloadbcm5719-llvm-bc6ebb5b76827a10a3c77f037acf499f4a29adc6.tar.gz
bcm5719-llvm-bc6ebb5b76827a10a3c77f037acf499f4a29adc6.zip
Allow implicit conversion from function pointer to void* in Microsoft mode.
Necessary to parse MFC code. llvm-svn: 131076
Diffstat (limited to 'clang/lib/Sema/SemaOverload.cpp')
-rw-r--r--clang/lib/Sema/SemaOverload.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp
index 602ecd66027..e8dd56f66fb 100644
--- a/clang/lib/Sema/SemaOverload.cpp
+++ b/clang/lib/Sema/SemaOverload.cpp
@@ -1628,6 +1628,15 @@ bool Sema::IsPointerConversion(Expr *From, QualType FromType, QualType ToType,
return true;
}
+ // MSVC allows implicit function to void* type conversion.
+ if (getLangOptions().Microsoft && FromPointeeType->isFunctionType() &&
+ ToPointeeType->isVoidType()) {
+ ConvertedType = BuildSimilarlyQualifiedPointerType(FromTypePtr,
+ ToPointeeType,
+ ToType, Context);
+ return true;
+ }
+
// When we're overloading in C, we allow a special kind of pointer
// conversion for compatible-but-not-identical pointee types.
if (!getLangOptions().CPlusPlus &&
OpenPOWER on IntegriCloud