diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2010-06-02 21:35:17 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2010-06-02 21:35:17 +0000 |
commit | d1b378e08db08635b59952e9853eb662d7adf5f6 (patch) | |
tree | 3b39802d9e6d9472dde96676b1d765e111569202 /clang/test/CodeGenCXX/reference-in-block-args.cpp | |
parent | 6a7f9f5c8fde7e1489d14a914ab2a47e4cd1bb3a (diff) | |
download | bcm5719-llvm-d1b378e08db08635b59952e9853eb662d7adf5f6.tar.gz bcm5719-llvm-d1b378e08db08635b59952e9853eb662d7adf5f6.zip |
Block C++ code gen. Adds support for block reference argument
types. Executable test will be added to LLVM test suite.
(radar 8041962).
llvm-svn: 105347
Diffstat (limited to 'clang/test/CodeGenCXX/reference-in-block-args.cpp')
-rw-r--r-- | clang/test/CodeGenCXX/reference-in-block-args.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/reference-in-block-args.cpp b/clang/test/CodeGenCXX/reference-in-block-args.cpp new file mode 100644 index 00000000000..1ff1ae2dc85 --- /dev/null +++ b/clang/test/CodeGenCXX/reference-in-block-args.cpp @@ -0,0 +1,29 @@ +// RUN: %clang_cc1 -fblocks %s -emit-llvm -o %t +// rdar: // 8041962 + +extern "C" int printf(const char*, ...); + +struct ST { + int filler; + int referrer; +}; + +void OUTER_BLOCK(void (^fixer)(ST& ref)) { + ST ref = {2, 100}; + fixer(ref); +} + +void INNER_BLOCK(int (^largeDo) ()) { + printf("%d\n", largeDo()); +} + +void scan() { + OUTER_BLOCK(^(ST &ref) { + INNER_BLOCK(^() { return ref.referrer + ref.filler; }); + }); + +} + +int main() { + scan(); +} |