diff options
| author | Douglas Gregor <dgregor@apple.com> | 2010-09-01 16:29:03 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2010-09-01 16:29:03 +0000 |
| commit | eece0eaa8500a3ed454026fcbcebdaf9006a9510 (patch) | |
| tree | a36f61ac37cb183b2f08209962892d44a7fdf760 /clang/lib/AST/ASTContext.cpp | |
| parent | c19eaaa9d4025ee756e57e1c90285cc471aa33ba (diff) | |
| download | bcm5719-llvm-eece0eaa8500a3ed454026fcbcebdaf9006a9510.tar.gz bcm5719-llvm-eece0eaa8500a3ed454026fcbcebdaf9006a9510.zip | |
Transfer calling-convention attributes down to member function pointers.
llvm-svn: 112715
Diffstat (limited to 'clang/lib/AST/ASTContext.cpp')
| -rw-r--r-- | clang/lib/AST/ASTContext.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index 574ada39807..4591a0f3c55 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -1124,6 +1124,15 @@ static QualType getExtFunctionType(ASTContext& Context, QualType T, return T; ResultType = Context.getBlockPointerType(ResultType); + } else if (const MemberPointerType *MemberPointer + = T->getAs<MemberPointerType>()) { + QualType Pointee = MemberPointer->getPointeeType(); + ResultType = getExtFunctionType(Context, Pointee, Info); + if (ResultType == Pointee) + return T; + + ResultType = Context.getMemberPointerType(ResultType, + MemberPointer->getClass()); } else if (const FunctionType *F = T->getAs<FunctionType>()) { if (F->getExtInfo() == Info) return T; |

