summaryrefslogtreecommitdiff
path: root/lib/BlocksRuntime/tests/localisglobal.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/BlocksRuntime/tests/localisglobal.c')
-rw-r--r--lib/BlocksRuntime/tests/localisglobal.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/BlocksRuntime/tests/localisglobal.c b/lib/BlocksRuntime/tests/localisglobal.c
new file mode 100644
index 000000000..75a79dff4
--- /dev/null
+++ b/lib/BlocksRuntime/tests/localisglobal.c
@@ -0,0 +1,42 @@
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+
+/*
+ * localisglobal.c
+ * testObjects
+ *
+ * Created by Blaine Garst on 9/29/08.
+ *
+ * works in all configurations
+ * CONFIG rdar://6230297
+ */
+
+#include <stdio.h>
+
+void (^global)(void) = ^{ printf("hello world\n"); };
+
+int aresame(void *first, void *second) {
+ long *f = (long *)first;
+ long *s = (long *)second;
+ return *f == *s;
+}
+int main(int argc, char *argv[]) {
+ int i = 10;
+ void (^local)(void) = ^ { printf("hi %d\n", i); };
+ void (^localisglobal)(void) = ^ { printf("hi\n"); };
+
+ if (aresame(local, localisglobal)) {
+ printf("local block could be global, but isn't\n");
+ return 1;
+ }
+ if (!aresame(global, localisglobal)) {
+ printf("local block is not global, not stack, what is it??\n");
+ return 1;
+ }
+ printf("%s: success\n", argv[0]);
+ return 0;
+
+}