aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Stump <mrs@apple.com>2009-07-27 22:25:19 +0000
committerMike Stump <mrs@apple.com>2009-07-27 22:25:19 +0000
commite24aea225ec87b935ede6c21c964dd47a4afb810 (patch)
tree3262955a6f768a687df23b0522fea660b3805053
parentf75560670bcdd59b051149bdece3eac14e313853 (diff)
Ensure we can work through typedefs.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77265 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/AST/ASTContext.cpp4
-rw-r--r--test/Sema/return.c3
2 files changed, 5 insertions, 2 deletions
diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp
index 61dbf24b45..f7e1e3fdff 100644
--- a/lib/AST/ASTContext.cpp
+++ b/lib/AST/ASTContext.cpp
@@ -1061,10 +1061,10 @@ QualType ASTContext::getNoReturnType(QualType T) {
if (!T->isFunctionType())
assert(0 && "can't noreturn qualify non-pointer to function or block type");
- if (const FunctionNoProtoType *F = dyn_cast<FunctionNoProtoType>(T)) {
+ if (const FunctionNoProtoType *F = T->getAsFunctionNoProtoType()) {
return getFunctionNoProtoType(F->getResultType(), true);
}
- const FunctionProtoType *F = cast<FunctionProtoType>(T);
+ const FunctionProtoType *F = T->getAsFunctionProtoType();
return getFunctionType(F->getResultType(), F->arg_type_begin(),
F->getNumArgs(), F->isVariadic(), F->getTypeQuals(),
F->hasExceptionSpec(), F->hasAnyExceptionSpec(),
diff --git a/test/Sema/return.c b/test/Sema/return.c
index c04337924a..423d1a9902 100644
--- a/test/Sema/return.c
+++ b/test/Sema/return.c
@@ -205,3 +205,6 @@ int test30() {
else
_longjmp(test30_j, 1);
}
+
+typedef void test31_t(int status);
+void test31(test31_t *callback __attribute__((noreturn)));