diff options
author | Anders Carlsson <andersca@mac.com> | 2009-12-23 22:31:44 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-12-23 22:31:44 +0000 |
commit | a88d19728476c82a78720ee1dd38b2b94f20eda4 (patch) | |
tree | b4649462c55d2e451f43724e93df50fa8bbe2e9a | |
parent | faa00b7a7ff4a5788a9e59bfda98df81a6e0e97c (diff) | |
download | bcm5719-llvm-a88d19728476c82a78720ee1dd38b2b94f20eda4.tar.gz bcm5719-llvm-a88d19728476c82a78720ee1dd38b2b94f20eda4.zip |
Mangle block pointer types. Fixes PR5858.
llvm-svn: 92069
-rw-r--r-- | clang/lib/CodeGen/Mangle.cpp | 3 | ||||
-rw-r--r-- | clang/test/CodeGenCXX/mangle.cpp | 5 |
2 files changed, 6 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/Mangle.cpp b/clang/lib/CodeGen/Mangle.cpp index 367c868ba96..f4c6ffeeda9 100644 --- a/clang/lib/CodeGen/Mangle.cpp +++ b/clang/lib/CodeGen/Mangle.cpp @@ -990,7 +990,8 @@ void CXXNameMangler::mangleType(const ObjCInterfaceType *T) { } void CXXNameMangler::mangleType(const BlockPointerType *T) { - assert(false && "can't mangle block pointer types yet"); + Out << "U13block_pointer"; + mangleType(T->getPointeeType()); } void CXXNameMangler::mangleType(const FixedWidthIntType *T) { diff --git a/clang/test/CodeGenCXX/mangle.cpp b/clang/test/CodeGenCXX/mangle.cpp index e57fbe34338..e8770dfec3e 100644 --- a/clang/test/CodeGenCXX/mangle.cpp +++ b/clang/test/CodeGenCXX/mangle.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin9 | FileCheck %s +// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-apple-darwin9 -fblocks | FileCheck %s struct X { }; struct Y { }; @@ -306,3 +306,6 @@ template<typename T, typename = Policy<P, true> > class Alloc // CHECK: define i8* @_ZN6PR58615AllocIcNS_6PolicyINS_1PELb1EEEE8allocateEiPKv template class Alloc<char>; } + +// CHECK: define void @_Z1fU13block_pointerFiiiE +void f(int (^)(int, int)) { }
\ No newline at end of file |