[llvm-commits] [test-suite] r105364 - /test-suite/trunk/SingleSource/UnitTests/ObjC++/reference-in-block-args.mm

Fariborz Jahanian fjahanian at apple.com
Wed Jun 2 16:33:24 PDT 2010


Author: fjahanian
Date: Wed Jun  2 18:33:23 2010
New Revision: 105364

URL: http://llvm.org/viewvc/llvm-project?rev=105364&view=rev
Log:
Test case for radar 8041962


Added:
    test-suite/trunk/SingleSource/UnitTests/ObjC++/reference-in-block-args.mm

Added: test-suite/trunk/SingleSource/UnitTests/ObjC++/reference-in-block-args.mm
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/ObjC%2B%2B/reference-in-block-args.mm?rev=105364&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/UnitTests/ObjC++/reference-in-block-args.mm (added)
+++ test-suite/trunk/SingleSource/UnitTests/ObjC++/reference-in-block-args.mm Wed Jun  2 18:33:23 2010
@@ -0,0 +1,32 @@
+extern "C" void abort (void);
+
+struct ST {
+     int filler; 
+     int referrer;
+};
+
+void OUTER_BLOCK(void (^fixer)(ST& ref)) {
+    ST ref = {2, 100};
+    fixer(ref);
+}
+  
+void INNER_BLOCK(int (^largeDo) ()) {
+        if (largeDo() != 102)
+	  abort();
+}
+
+void scan() {
+            OUTER_BLOCK(^(ST &ref) {
+                INNER_BLOCK(^() { 
+                  if (ref.referrer != 100)
+                    abort();
+                  return ref.referrer + ref.filler; 
+                });
+            });
+
+}
+
+int main(int argc, const char *argv[]) {
+    scan();
+    return 0;
+}





More information about the llvm-commits mailing list