aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/CodeGen/CGExpr.cpp2
-rw-r--r--test/CodeGen/functions.c8
2 files changed, 8 insertions, 2 deletions
diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp
index b219b7a67d..1fd616c648 100644
--- a/lib/CodeGen/CGExpr.cpp
+++ b/lib/CodeGen/CGExpr.cpp
@@ -721,7 +721,7 @@ RValue CodeGenFunction::EmitCallExpr(llvm::Value *Callee, QualType FnType,
// The callee type will always be a pointer to function type, get the function
// type.
FnType = FnType->getAsPointerType()->getPointeeType();
- QualType ResultType = cast<FunctionType>(FnType)->getResultType();
+ QualType ResultType = FnType->getAsFunctionType()->getResultType();
llvm::SmallVector<llvm::Value*, 16> Args;
diff --git a/test/CodeGen/functions.c b/test/CodeGen/functions.c
index 09cb9786da..60e2b6c80c 100644
--- a/test/CodeGen/functions.c
+++ b/test/CodeGen/functions.c
@@ -1,4 +1,4 @@
-// RUN: clang %s -emit-llvm
+// RUN: clang %s -emit-llvm -o -
int g();
int foo(int i) {
@@ -9,3 +9,9 @@ int g(int i) {
return g(i);
}
+// rdar://6110827
+typedef void T(void);
+void test3(T f) {
+ f();
+}
+