diff options
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/CodeGen/CGDecl.cpp | 2 | ||||
-rw-r--r-- | clang/test/CodeGenCXX/reference-in-blocks.cpp | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGDecl.cpp b/clang/lib/CodeGen/CGDecl.cpp index 8ce196b64e8..d4c65e3e744 100644 --- a/clang/lib/CodeGen/CGDecl.cpp +++ b/clang/lib/CodeGen/CGDecl.cpp @@ -373,7 +373,7 @@ const llvm::Type *CodeGenFunction::BuildByRefType(const ValueDecl *D) { } // T x; - Types.push_back(ConvertType(Ty)); + Types.push_back(ConvertTypeForMem(Ty)); const llvm::Type *T = llvm::StructType::get(VMContext, Types, Packed); diff --git a/clang/test/CodeGenCXX/reference-in-blocks.cpp b/clang/test/CodeGenCXX/reference-in-blocks.cpp index 388ec7c4bbc..f08ef568802 100644 --- a/clang/test/CodeGenCXX/reference-in-blocks.cpp +++ b/clang/test/CodeGenCXX/reference-in-blocks.cpp @@ -41,3 +41,13 @@ int main() { a->F(); return 0; } + +// rdar://8382559 +namespace radar8382559 { + void func(bool& outHasProperty); + + void test() { + __attribute__((__blocks__(byref))) bool hasProperty = false; + func(hasProperty); + } +} |