[llvm-commits] [llvm-gcc-4.2] r56323 - in /llvm-gcc-4.2/trunk/gcc/testsuite: g++.apple/ g++.dg/ext/ g++.dg/warn/ gcc.apple/ obj-c++.dg/ objc.dg/

Bill Wendling isanbard at gmail.com
Thu Sep 18 17:15:30 PDT 2008


Author: void
Date: Thu Sep 18 19:15:30 2008
New Revision: 56323

URL: http://llvm.org/viewvc/llvm-project?rev=56323&view=rev
Log:
Syncing testsuite up with Apple's GCC testsuite.

Added:
    llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/block-copyconstructor.C
    llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/block-dynamic-array.C
    llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/block-explicit-return-type.C
    llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/block-reference-in-method.C
    llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/blocks-recovercpp.C
    llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/ctor.C
    llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/mips-linkage-name.C
    llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/unwind-1.C
    llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/apple-r4168392.C
    llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/warn/anonymous-namespace-1.C
    llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/warn/anonymous-namespace-1.h
    llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/warn/anonymous-namespace-2.C
    llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/warn/anonymous-namespace-2.h
    llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/block-byref-dynamic-array.c
    llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/block-dynamic-array.c
    llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/block-explicit-return-type.c
    llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/format-security-attribute-3.c
    llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/property-synthesize-ivar-10.mm
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-gc-1-64bit.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-gc-5-64bit.m
    llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-10.m

Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/block-copyconstructor.C
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/block-copyconstructor.C?rev=56323&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/block-copyconstructor.C (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/block-copyconstructor.C Thu Sep 18 19:15:30 2008
@@ -0,0 +1,83 @@
+/* APPLE LOCAL file radar 6169527 */
+/* Test for proper use of copy constructors in setting up various block
+   support code. */
+/* { dg-do run } */
+/* { dg-options "-mmacosx-version-min=10.6 " { target *-*-darwin* } } */
+
+#import <Block.h>
+#include <stdio.h>
+
+int constructors = 0;
+int destructors = 0;
+
+#define CONST const
+
+class TestObject
+{
+public:
+	TestObject(CONST TestObject& inObj);
+	TestObject();
+	~TestObject();
+	
+	TestObject& operator=(CONST TestObject& inObj);
+
+	int version() CONST { return _version; }
+private:
+	mutable int _version;
+};
+
+TestObject::TestObject(CONST TestObject& inObj)
+	
+{
+        ++constructors;
+        _version = inObj._version;
+	printf("%p (%d) -- TestObject(const TestObject&) called", this, _version); 
+}
+
+
+TestObject::TestObject()
+{
+        _version = ++constructors;
+	printf("%p (%d) -- TestObject() called\n", this, _version); 
+}
+
+
+TestObject::~TestObject()
+{
+	printf("%p -- ~TestObject() called\n", this);
+        ++destructors;
+}
+
+
+TestObject& TestObject::operator=(CONST TestObject& inObj)
+{
+	printf("%p -- operator= called", this);
+        _version = inObj._version;
+	return *this;
+}
+
+void simpletest() {
+    TestObject one;
+    TestObject two;
+    printf("one (%d) two (%d)\n", one.version(), two.version());
+    one = two;
+    printf(" after one = two, one (%d) two (%d)\n", one.version(), two.version());
+}
+
+
+void testRoutine() {
+    TestObject one;
+    
+    void (^b)(void) = ^{ printf("my const copy of one is %d\n", one.version()); };
+}
+    
+int main(char *argc, char *argv[]) {
+    //simpletest();
+    testRoutine();
+    if (constructors != 0) {
+        printf("%s: success\n", argv[0]);
+        return 0;
+    }
+    printf("%s: *** didn't copy construct\n", argv[0]);
+    return 1;
+}

Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/block-dynamic-array.C
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/block-dynamic-array.C?rev=56323&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/block-dynamic-array.C (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/block-dynamic-array.C Thu Sep 18 19:15:30 2008
@@ -0,0 +1,74 @@
+/* APPLE LOCAL file radar 6212722 */
+/* Test for use of array (dynamic or static) as copied in object in a block. */
+/* { dg-options "-mmacosx-version-min=10.6 -ObjC++ -framework Foundation" { target *-*-darwin* } } */
+/* { dg-do run } */
+
+#import <Foundation/Foundation.h>
+#import <Block.h>
+
+
+int _getArrayCount() {return 5;}
+
+
+int func ()
+{
+	NSAutoreleasePool *pool	= [[NSAutoreleasePool alloc] init];
+
+	int array[5];
+	
+	int i;
+	const int c = 5;
+	for (i = 0; i < c; ++i)
+	{
+		array[i] = i+1;
+	}
+	
+	void (^block)(void) = ^{
+	
+		int i;
+		NSLog (@"c = %d", c);
+		for (i = 0; i < c; ++i)
+		{
+			NSLog (@"array[%d] = %d", i, array[i]);
+		}
+	
+	};
+	
+	block();
+
+	[pool drain];
+	return 0;
+}
+
+int main (int argc, const char *argv[])
+{
+        int res;
+	NSAutoreleasePool *pool	= [[NSAutoreleasePool alloc] init];
+
+	int array[_getArrayCount()];
+	
+	int i;
+	const int c = _getArrayCount();
+	for (i = 0; i < c; ++i)
+	{
+		array[i] = i+1;
+	}
+	
+	void (^block)(void) = ^{
+	
+		int i;
+		//const int c = _getArrayCount();
+		NSLog (@"c = %d", c);
+		for (i = 0; i < c; ++i)
+		{
+			NSLog (@"array[%d] = %d", i, array[i]);
+		}
+	
+	};
+	
+	block();
+	res = func();
+
+	[pool drain];
+	return 0 + res;
+}

Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/block-explicit-return-type.C
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/block-explicit-return-type.C?rev=56323&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/block-explicit-return-type.C (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/block-explicit-return-type.C Thu Sep 18 19:15:30 2008
@@ -0,0 +1,83 @@
+/* APPLE LOCAL file radar 6185344 */
+/* Test for blocks with explicit return type specified. */
+/* { dg-options "-mmacosx-version-min=10.6 -ObjC++" { target *-*-darwin* } } */
+/* { dg-do compile } */
+
+typedef float * PF;
+float gf;
+
+ at interface NSView
+  - (id) some_method_that_returns_id;
+ at end
+
+NSView *some_object;
+
+void some_func (NSView * (^) (id));
+
+typedef struct dispatch_item_s *dispatch_item_t;
+typedef void (^completion_block_t)(void);
+
+typedef double (^myblock)(int);
+double test(myblock I);
+
+int main()
+{
+	 __block int x = 1;
+ 	__block int y = 2;
+
+	^void *{ return 0; };
+
+	^float(float y){ return y; };
+
+	^double (float y, double d) 
+           {
+	      if (y)
+	       return d;
+	      else
+	       return y;
+	   };
+
+	const char * (^chb) (int flag, const char *arg, char *arg1) = ^ const char * (int flag, const char *arg, char *arg1) { 
+	  if (flag)
+	    return 0;
+	  if (flag == 1)
+	    return arg;
+          else if (flag == 2)
+	    return "";
+	  return arg1; 
+	};
+
+	^PF { return &gf; };
+
+	some_func(^ NSView * (id whatever) { return [some_object some_method_that_returns_id]; });
+
+	double res = test(^double (int z){x = y+z; return z; });	
+}
+
+void func()
+{
+  completion_block_t X;
+
+  completion_block_t (^blockx)(dispatch_item_t) = ^completion_block_t (dispatch_item_t item) {
+    return X;
+  };
+
+  completion_block_t (^blocky)(dispatch_item_t) = ^(dispatch_item_t item) {
+    return X;
+  };
+
+  blockx = blocky;
+
+}
+
+
+// intent: block taking int returning block that takes char,int and returns int
+int (^(^block)(double x))(char, short);
+
+void foo() {
+   block = ^(double x){ return ^int(char c, short y) { return c + y; };};  /* { dg-warning "returning block that lives on the local stack" } */
+   // or:
+   block = ^(double x){ return ^(char c, short y) { return (int)c + y; };};  /* { dg-warning "returning block that lives on the local stack" } */
+}
+
+

Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/block-reference-in-method.C
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/block-reference-in-method.C?rev=56323&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/block-reference-in-method.C (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/block-reference-in-method.C Thu Sep 18 19:15:30 2008
@@ -0,0 +1,95 @@
+/* APPLE LOCAL file radar 6169580 */
+/* Test use of blocks in member functions. */
+/* { dg-do run } */
+/* { dg-options "-mmacosx-version-min=10.6 " { target *-*-darwin* } } */
+
+#import <Block.h>
+#include <stdio.h>
+
+int recovered = 0;
+
+
+#ifdef __cplusplus
+
+int constructors = 0;
+int destructors = 0;
+
+#define CONST const
+
+class TestObject
+{
+public:
+	TestObject(CONST TestObject& inObj);
+	TestObject();
+	~TestObject();
+	
+	TestObject& operator=(CONST TestObject& inObj);
+        
+        void test(void);
+
+	int version() CONST { return _version; }
+private:
+	mutable int _version;
+};
+
+TestObject::TestObject(CONST TestObject& inObj)
+	
+{
+        ++constructors;
+        _version = inObj._version;
+	printf("%p (%d) -- TestObject(const TestObject&) called", this, _version); 
+}
+
+
+TestObject::TestObject()
+{
+        _version = ++constructors;
+	printf("%p (%d) -- TestObject() called\n", this, _version); 
+}
+
+
+TestObject::~TestObject()
+{
+	printf("%p -- ~TestObject() called\n", this);
+        ++destructors;
+}
+
+#if 1
+TestObject& TestObject::operator=(CONST TestObject& inObj)
+{
+	printf("%p -- operator= called", this);
+        _version = inObj._version;
+	return *this;
+}
+#endif
+
+void TestObject::test(void)  {
+    void (^b)(void) = ^{ recovered = _version; };
+    b();
+}
+
+#endif
+
+
+void testRoutine() {
+#ifdef __cplusplus
+    TestObject one;
+
+    
+    one.test();
+#else
+    recovered = 1;
+#endif
+}
+    
+    
+
+int main(char *argc, char *argv[]) {
+    testRoutine();
+    if (recovered == 1) {
+        printf("%s: success\n", argv[0]);
+        return (0);
+    }
+    printf("%s: *** didn't recover byref block variable\n", argv[0]);
+    return (1);
+}

Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/blocks-recovercpp.C
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/blocks-recovercpp.C?rev=56323&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/blocks-recovercpp.C (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/blocks-recovercpp.C Thu Sep 18 19:15:30 2008
@@ -0,0 +1,104 @@
+/* APPLE LOCAL file radar 6214617 */
+/* { dg-options "-mmacosx-version-min=10.5 -ObjC++" { target *-*-darwin* } } */
+/* { dg-do run } */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+int constructors = 0;
+int destructors = 0;
+
+void * _NSConcreteStackBlock[32];
+
+#define CONST const
+
+class TestObject
+{
+public:
+	TestObject(CONST TestObject& inObj);
+	TestObject();
+	~TestObject();
+	
+	TestObject& operator=(CONST TestObject& inObj);
+
+	int version() CONST { return _version; }
+private:
+	mutable int _version;
+};
+
+TestObject::TestObject(CONST TestObject& inObj)
+	
+{
+        ++constructors;
+        _version = inObj._version;
+	printf("%p (%d) -- TestObject(const TestObject&) called\n", this, _version); 
+}
+
+
+TestObject::TestObject()
+{
+        _version = ++constructors;
+	printf("%p (%d) -- TestObject() called\n", this, _version); 
+}
+
+
+TestObject::~TestObject()
+{
+	printf("%p -- ~TestObject() called\n", this);
+        ++destructors;
+}
+
+
+TestObject& TestObject::operator=(CONST TestObject& inObj)
+{
+	printf("%p -- operator= called\n", this);
+        _version = inObj._version;
+	return *this;
+}
+
+void hack(void *block) {
+    // check flags to see if constructor/destructor is available;
+    struct myblock {
+        void *isa;
+        int flags;
+        int refcount;
+        void *invokeptr;
+        void (*copyhelper)(struct myblock *dst, struct myblock *src);
+        void (*disposehelper)(struct myblock *src);
+        long space[32];
+    } myversion, *mbp = (struct myblock *)block;
+    printf("flags -> %x\n", mbp->flags);
+    if (! ((1<<25) & mbp->flags)) {
+        printf("no copy/dispose helper functions provided!\n");
+        exit(1);
+    }
+    if (! ((1<<26) & mbp->flags)) {
+        printf("no marking for ctor/dtors present!\n");
+        exit(1);
+    }
+    printf("copyhelper -> %p\n", mbp->copyhelper);
+    // simulate copy
+    mbp->copyhelper(&myversion, mbp);
+    if (constructors != 3) {
+        printf("copy helper didn't do the constructor part\n");
+        exit(1);
+    }
+    printf("disposehelper -> %p\n", mbp->disposehelper);
+    // simulate destroy
+    mbp->disposehelper(&myversion);
+    if (destructors != 1) {
+        printf("dispose helper didn't do the dispose\n");
+        exit(1);
+    }
+}
+void testRoutine() {
+    TestObject one;
+    
+    void (^b)(void) = ^{ printf("my copy of one is %d\n", one.version()); };
+    hack(b);
+}
+
+int main(char *argc, char *argv[]) {
+    testRoutine();
+    exit(0);
+}

Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/ctor.C
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/ctor.C?rev=56323&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/ctor.C (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/ctor.C Thu Sep 18 19:15:30 2008
@@ -0,0 +1,8 @@
+/* APPLE LOCAL file ctor name 6202462 */
+class A {
+  virtual int B() { return 0; }
+};
+
+class B: A {
+  B() { }
+};

Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/mips-linkage-name.C
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/mips-linkage-name.C?rev=56323&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/mips-linkage-name.C (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/mips-linkage-name.C Thu Sep 18 19:15:30 2008
@@ -0,0 +1,13 @@
+/* Radar 6066486 */
+/* { dg-do compile { target *-*-darwin* } } */
+/* { dg-options "-O0 -gdwarf-2 -dA" } */
+/* { dg-final { scan-assembler-not "DW_AT_MIPS_linkage_name" } }*/
+
+#include <unistd.h>
+
+int main (int argc, char **argv)
+{
+  static int spin = 1;
+  while (spin) sleep (1);
+}
+

Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/unwind-1.C
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.apple/unwind-1.C?rev=56323&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/unwind-1.C (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.apple/unwind-1.C Thu Sep 18 19:15:30 2008
@@ -0,0 +1,35 @@
+/* APPLE LOCAL file 6205688 */
+/* { dg-do run } */
+#include <stdio.h>
+
+void fn2(int i) __attribute__((noinline));
+void fn2(int i) {
+  printf("fn2 %d\n", i);
+}
+
+int fn3(int i) __attribute__((noinline));
+int fn3(int i) {
+  if (i) return i+1;
+  else throw 1;
+}
+
+void fn(int i) __attribute__((noinline));
+void fn(int i) {
+  if (i) {
+    fn2(i);
+  } else {
+    int j = fn3(i);
+    printf("j %d\n", j);
+  }
+}
+
+volatile int arg = 0;
+
+int main(int argc, char **argv) {
+  try {
+    fn(arg);
+  } catch (int e) {
+    printf("caught %d\n", e);
+  }
+  return 0;
+}

Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/ext/apple-r4168392.C
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/ext/apple-r4168392.C?rev=56323&view=auto

==============================================================================
    (empty)

Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/warn/anonymous-namespace-1.C
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/warn/anonymous-namespace-1.C?rev=56323&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/warn/anonymous-namespace-1.C (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/warn/anonymous-namespace-1.C Thu Sep 18 19:15:30 2008
@@ -0,0 +1,19 @@
+// APPLE LOCAL file mainline radar 6194879
+// Test for the warning of exposing types from an anonymous namespace
+// { dg-do compile }
+
+#include "anonymous-namespace-1.h"
+
+namespace {
+ class good { };
+}
+
+class foo::bar : public good { }; 
+class foobar1
+{
+  good g;
+};
+
+#line 18 "foo.C"
+class foobar : public bad { }; // { dg-warning "uses the anonymous namespace" }
+class foobar2 { bad b; }; // { dg-warning "uses the anonymous namespace" }

Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/warn/anonymous-namespace-1.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/warn/anonymous-namespace-1.h?rev=56323&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/warn/anonymous-namespace-1.h (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/warn/anonymous-namespace-1.h Thu Sep 18 19:15:30 2008
@@ -0,0 +1,8 @@
+// APPLE LOCAL file mainline radar 6194879
+class foo {
+ class bar;
+};
+
+namespace {
+  class bad { };
+}

Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/warn/anonymous-namespace-2.C
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/warn/anonymous-namespace-2.C?rev=56323&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/warn/anonymous-namespace-2.C (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/warn/anonymous-namespace-2.C Thu Sep 18 19:15:30 2008
@@ -0,0 +1,29 @@
+// APPLE LOCAL file mainline radar 6194879
+// Test for the warning of exposing types from an anonymous namespace
+// { dg-do compile }
+//
+#include "anonymous-namespace-2.h"
+
+namespace {
+    struct good { };
+}
+
+struct g1 {
+    good * A;
+};
+struct g2 {
+    good * A[1];
+};
+struct g3 {
+    good (*A)[1];
+};
+#line 21 "foo.C"
+struct b1 { // { dg-warning "uses the anonymous namespace" }
+    bad * B;
+};
+struct b2 { // { dg-warning "uses the anonymous namespace" }
+    bad * B[1];
+};
+struct b3 { // { dg-warning "uses the anonymous namespace" }
+    bad (*B)[1];
+};

Added: llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/warn/anonymous-namespace-2.h
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/g%2B%2B.dg/warn/anonymous-namespace-2.h?rev=56323&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/warn/anonymous-namespace-2.h (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/g++.dg/warn/anonymous-namespace-2.h Thu Sep 18 19:15:30 2008
@@ -0,0 +1,4 @@
+// APPLE LOCAL file mainline radar 6194879
+namespace {
+  struct bad { };
+}

Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/block-byref-dynamic-array.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/block-byref-dynamic-array.c?rev=56323&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/block-byref-dynamic-array.c (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/block-byref-dynamic-array.c Thu Sep 18 19:15:30 2008
@@ -0,0 +1,26 @@
+/* APPLE LOCAL file radar 6217257 */
+/* __block cannot be used on dynamic array declaration due to block's runtime
+   limitations. This test detects and flags as error such cases. */
+/* { dg-options "-mmacosx-version-min=10.6 -ObjC" { target *-*-darwin* } } */
+/* { dg-do compile } */
+
+int size=5;
+
+int main() {
+  __block int array[size];	/* { dg-error "__block not allowed on a variable length array declaration" } */
+
+  __block id aid1[size];	/* { dg-error "__block not allowed on a variable length array declaration" } */
+
+ __block id aid2[2][size];	/* { dg-error "__block not allowed on a variable length array declaration" } */
+
+ __block id aid3[][size];	/* { dg-error "__block not allowed on a variable length array declaration" } */
+				/* { dg-error "array size missing in" "" { target *-*-* } 16 } */
+
+
+ __block id oid1 [1];
+ __block id oid2 [2][3];
+ __block id oid4 [][1];	/* { dg-error "__block not allowed on a variable length array declaration" } */
+		        /* { dg-error "array size missing in" "" { target *-*-* } 22 } */
+ return 0;
+}
+

Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/block-dynamic-array.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/block-dynamic-array.c?rev=56323&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/block-dynamic-array.c (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/block-dynamic-array.c Thu Sep 18 19:15:30 2008
@@ -0,0 +1,74 @@
+/* APPLE LOCAL file radar 6212722 */
+/* Test for use of array (dynamic or static) as copied in object in a block. */
+/* { dg-options "-mmacosx-version-min=10.6 -ObjC -framework Foundation" { target *-*-darwin* } } */
+/* { dg-do run } */
+
+#import <Foundation/Foundation.h>
+#import <Block.h>
+
+
+int _getArrayCount() {return 5;}
+
+
+int func ()
+{
+	NSAutoreleasePool *pool	= [[NSAutoreleasePool alloc] init];
+
+	int array[5];
+	
+	int i;
+	const int c = 5;
+	for (i = 0; i < c; ++i)
+	{
+		array[i] = i+1;
+	}
+	
+	void (^block)(void) = ^{
+	
+		int i;
+		NSLog (@"c = %d", c);
+		for (i = 0; i < c; ++i)
+		{
+			NSLog (@"array[%d] = %d", i, array[i]);
+		}
+	
+	};
+	
+	block();
+
+	[pool drain];
+	return 0;
+}
+
+int main (int argc, const char *argv[])
+{
+        int res;
+	NSAutoreleasePool *pool	= [[NSAutoreleasePool alloc] init];
+
+	int array[_getArrayCount()];
+	
+	int i;
+	const int c = _getArrayCount();
+	for (i = 0; i < c; ++i)
+	{
+		array[i] = i+1;
+	}
+	
+	void (^block)(void) = ^{
+	
+		int i;
+		//const int c = _getArrayCount();
+		NSLog (@"c = %d", c);
+		for (i = 0; i < c; ++i)
+		{
+			NSLog (@"array[%d] = %d", i, array[i]);
+		}
+	
+	};
+	
+	block();
+	res = func();
+
+	[pool drain];
+	return 0 + res;
+}

Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/block-explicit-return-type.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/block-explicit-return-type.c?rev=56323&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/block-explicit-return-type.c (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/block-explicit-return-type.c Thu Sep 18 19:15:30 2008
@@ -0,0 +1,83 @@
+/* APPLE LOCAL file radar 6185344 */
+/* Test for blocks with explicit return type specified. */
+/* { dg-options "-mmacosx-version-min=10.6 -ObjC" { target *-*-darwin* } } */
+/* { dg-do compile } */
+
+typedef float * PF;
+float gf;
+
+ at interface NSView
+  - (id) some_method_that_returns_id;
+ at end
+
+NSView *some_object;
+
+void some_func (NSView * (^) (id));
+
+typedef struct dispatch_item_s *dispatch_item_t;
+typedef void (^completion_block_t)(void);
+
+typedef double (^myblock)(int);
+double test(myblock I);
+
+int main()
+{
+	 __block int x = 1;
+ 	__block int y = 2;
+
+	^void *{ return 0; };
+
+	^float(float y){ return y; };
+
+	^double (float y, double d) 
+           {
+	      if (y)
+	       return d;
+	      else
+	       return y;
+	   };
+
+	const char * (^chb) (int flag, const char *arg, char *arg1) = ^ const char * (int flag, const char *arg, char *arg1) { 
+	  if (flag)
+	    return 0;
+	  if (flag == 1)
+	    return arg;
+          else if (flag == 2)
+	    return "";
+	  return arg1; 
+	};
+
+	^PF { return &gf; };
+
+	some_func(^ NSView * (id whatever) { return [some_object some_method_that_returns_id]; });
+
+	double res = test(^double (int z){x = y+z; return z; });	
+}
+
+void func()
+{
+  completion_block_t X;
+
+  completion_block_t (^blockx)(dispatch_item_t) = ^completion_block_t (dispatch_item_t item) {
+    return X;
+  };
+
+  completion_block_t (^blocky)(dispatch_item_t) = ^(dispatch_item_t item) {
+    return X;
+  };
+
+  blockx = blocky;
+
+}
+
+
+// intent: block taking int returning block that takes char,int and returns int
+int (^(^block)(double x))(char, short);
+
+void foo() {
+   block = ^(double x){ return ^int(char c, short y) { return c + y; };};  /* { dg-warning "returning block that lives on the local stack" } */
+   // or:
+   block = ^(double x){ return ^(char c, short y) { return (int)c + y; };};  /* { dg-warning "returning block that lives on the local stack" } */
+}
+
+

Added: llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/format-security-attribute-3.c
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/format-security-attribute-3.c?rev=56323&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/format-security-attribute-3.c (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/gcc.apple/format-security-attribute-3.c Thu Sep 18 19:15:30 2008
@@ -0,0 +1,8 @@
+/* APPLE LOCAL file radar 6212507 */
+/* This for incorrect specification of format number argument. */
+/* { dg-options "-fconstant-cfstrings -Wformat -Wformat-security" } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+#include <CoreFoundation/CoreFoundation.h>
+void doSomething(CFStringRef format, CFStringRef bla) __attribute__((format(CFString, 0, 1))); /* { dg-error "argument number of CFString format cannot be less than one" } */
+

Added: llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/property-synthesize-ivar-10.mm
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/obj-c%2B%2B.dg/property-synthesize-ivar-10.mm?rev=56323&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/property-synthesize-ivar-10.mm (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/property-synthesize-ivar-10.mm Thu Sep 18 19:15:30 2008
@@ -0,0 +1,35 @@
+/* APPLE LOCAL file radar 6209554 */
+/* Better messages for bad property declarations. */
+/* { dg-options "-fnew-property-ivar-synthesis -mmacosx-version-min=10.5" { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+/* { dg-options "-fnew-property-ivar-synthesis -fobjc-new-property" { target arm*-*-darwin* } } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+ at interface I
+{
+	int _p;
+	int _p3;
+	int _p4;
+}
+ at property int p;
+ at property int p1;
+ at property int p3;
+ at property int p4;
+ at end
+
+ at implementation I
+
+ at dynamic p3; /* { dg-error "previous property declaration of \\'p3\\' was here" } */
+ at dynamic p4;	/* { dg-error "previous property declaration of \\'p4\\' was here" } */
+ at synthesize p = _p; /* { dg-error "previous property declaration of \\'p\\' was here" } */
+
+
+ at synthesize p1 = _p;  /* { dg-error "synthesized properties \\'p1\\' and \\'p\\' both claim ivar \\'_p\\'" } */
+
+ at dynamic p3;  /* { dg-error "property \\'p3\\' is already implemented" } */
+
+ at synthesize p4=_p4;	/* { dg-error "property \\'p4\\' is already implemented" } */
+
+
+ at end
+
+

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-gc-1-64bit.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-gc-1-64bit.m?rev=56323&view=auto

==============================================================================
    (empty)

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-gc-5-64bit.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-gc-5-64bit.m?rev=56323&view=auto

==============================================================================
    (empty)

Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-10.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-10.m?rev=56323&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-10.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-10.m Thu Sep 18 19:15:30 2008
@@ -0,0 +1,35 @@
+/* APPLE LOCAL file radar 6209554 */
+/* Better messages for bad property declarations. */
+/* { dg-options "-fnew-property-ivar-synthesis -mmacosx-version-min=10.5" { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+/* { dg-options "-fnew-property-ivar-synthesis -fobjc-new-property" { target arm*-*-darwin* } } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+ at interface I
+{
+	int _p;
+	int _p3;
+	int _p4;
+}
+ at property int p;
+ at property int p1;
+ at property int p3;
+ at property int p4;
+ at end
+
+ at implementation I
+
+ at dynamic p3; /* { dg-error "previous property declaration of \\'p3\\' was here" } */
+ at dynamic p4;	/* { dg-error "previous property declaration of \\'p4\\' was here" } */
+ at synthesize p = _p; /* { dg-error "previous property declaration of \\'p\\' was here" } */
+
+
+ at synthesize p1 = _p;  /* { dg-error "synthesized properties \\'p1\\' and \\'p\\' both claim ivar \\'_p\\'" } */
+
+ at dynamic p3;  /* { dg-error "property \\'p3\\' is already implemented" } */
+
+ at synthesize p4=_p4;	/* { dg-error "property \\'p4\\' is already implemented" } */
+
+
+ at end
+
+





More information about the llvm-commits mailing list