aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2012-12-14 19:44:11 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2012-12-14 19:44:11 +0000
commit4ae711b5ef292378d5b88cede3d4b708174053e2 (patch)
tree42702185631a56b6f5ada11a56d70c426ad7e7b1
parent12b3e3199c530b72f3cc44dd24a1e20ed6086292 (diff)
Don't hit an assertion failure when calculating the __PRETTY_FUNCTION__
of a member function with parenthesized declarator. Like this test case: class Foo { const char *(baz)() { return __PRETTY_FUNCTION__; } }; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170233 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/AST/Expr.cpp2
-rw-r--r--test/CodeGenCXX/predefined-expr.cpp2
2 files changed, 2 insertions, 2 deletions
diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp
index e6171eb708..d3f8ac0f82 100644
--- a/lib/AST/Expr.cpp
+++ b/lib/AST/Expr.cpp
@@ -510,7 +510,7 @@ std::string PredefinedExpr::ComputeName(IdentType IT, const Decl *CurrentDecl) {
POut << ")";
if (const CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD)) {
- const FunctionType *FT = cast<FunctionType>(MD->getType().getTypePtr());
+ const FunctionType *FT = MD->getType()->castAs<FunctionType>();
if (FT->isConst())
POut << " const";
if (FT->isVolatile())
diff --git a/test/CodeGenCXX/predefined-expr.cpp b/test/CodeGenCXX/predefined-expr.cpp
index 1795ec8b46..24ead8f8f4 100644
--- a/test/CodeGenCXX/predefined-expr.cpp
+++ b/test/CodeGenCXX/predefined-expr.cpp
@@ -142,7 +142,7 @@ public:
printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);
}
- inline void inlineFunction() {
+ inline void (inlineFunction)() {
printf("__func__ %s\n", __func__);
printf("__FUNCTION__ %s\n", __FUNCTION__);
printf("__PRETTY_FUNCTION__ %s\n\n", __PRETTY_FUNCTION__);