[llvm-commits] [llvm-gcc-4.2] r55731 - /llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/
Bill Wendling
isanbard at gmail.com
Wed Sep 3 13:54:34 PDT 2008
Author: void
Date: Wed Sep 3 15:54:34 2008
New Revision: 55731
URL: http://llvm.org/viewvc/llvm-project?rev=55731&view=rev
Log:
Add new tests, delete empty tests, and fix string formatting.
Syncs with Apple's GCC r150332.
Added:
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-format-5.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-nowarn-proto.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-1.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-2.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-3.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-32-5.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-4.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-5.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-6.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-7.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-8.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-9.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/protocol-array-ivar.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/synthesized-unknown-ivar-warn.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/type-nsobject-attribute-2.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/type-nsobject-attribute.m
Removed:
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/objc2-protocol-3.m
Modified:
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-3.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/exceptionCodeGenBug.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/no-strict-alias-warn.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-foreach-11.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-gc-assign-ivar-1.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-ivar-offset.m
Modified: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-3.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-3.m?rev=55731&r1=55730&r2=55731&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-3.m (original)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-3.m Wed Sep 3 15:54:34 2008
@@ -2,7 +2,7 @@
runtime. */
/* Developed by Markus Hitter <mah at jump-ing.de>. */
/* APPLE LOCAL radar 4621575 */
-/* { dg-options "-fnext-runtime -fno-constant-cfstrings -fconstant-string-class=Foo -lobjc" } */
+/* { dg-options "-fnext-runtime -fno-constant-cfstrings -fconstant-string-class=Foo -lobjc -Wno-format" } */
/* { dg-do run { target *-*-darwin* } } */
/* APPLE LOCAL radar 5272224 */
/* { dg-require-effective-target ilp32 } */
Modified: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/exceptionCodeGenBug.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/exceptionCodeGenBug.m?rev=55731&r1=55730&r2=55731&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/exceptionCodeGenBug.m (original)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/exceptionCodeGenBug.m Wed Sep 3 15:54:34 2008
@@ -59,4 +59,3 @@
exit(0);
return 0;
}
-/* { dg-xfail-if "" { powerpc*-*-darwin* } { "-m64" } { "" } } */
Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-format-5.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-format-5.m?rev=55731&view=auto
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-format-5.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/method-attribute-format-5.m Wed Sep 3 15:54:34 2008
@@ -0,0 +1,15 @@
+/* APPLE LOCAL file 6157135 */
+/* Check for declaration and usage of 'format' __NSString sttribuet where number of
+ first variarg is 0 */
+/* { dg-options "-Wformat" } */
+/* { dg-do compile } */
+#include <Foundation/Foundation.h>
+
+ at interface MyClass
+- (id)initWithFormat:(NSString *)format arguments:(va_list)argList __attribute__((format(__NSString__, 1, 0)));
+ at end
+
+void FOO (MyClass* p)
+{
+ [p initWithFormat:(NSString *)nil arguments: 0];
+}
Modified: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/no-strict-alias-warn.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/no-strict-alias-warn.m?rev=55731&r1=55730&r2=55731&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/no-strict-alias-warn.m (original)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/no-strict-alias-warn.m Wed Sep 3 15:54:34 2008
@@ -2,7 +2,7 @@
/* Test that no strict aliasing warning is issued with CFStrings and
-fstrict-aliasing. */
/* { dg-do compile { target *-*-darwin* } } */
-/* { dg-options "-Wall -fconstant-cfstrings -fstrict-aliasing" } */
+/* { dg-options "-Wall -fconstant-cfstrings -fstrict-aliasing -Wno-format" } */
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
Modified: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-foreach-11.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-foreach-11.m?rev=55731&r1=55730&r2=55731&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-foreach-11.m (original)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-foreach-11.m Wed Sep 3 15:54:34 2008
@@ -46,7 +46,7 @@
}
else {
result = false;
- printf("** failed: %s %s %s (%d vs %d)\n", style, test, message, counter, [reference count]);
+ printf("** failed: %s %s %s (%d vs %ld)\n", style, test, message, counter, (long)[reference count]);
++Errors;
}
return result;
@@ -67,7 +67,7 @@
}
else {
result = false;
- printf("** failed: %s %s %s (%d vs %d)\n", style, test, message, counter, [reference count]);
+ printf("** failed: %s %s %s (%d vs %ld)\n", style, test, message, counter, (long)[reference count]);
++Errors;
}
return result;
Removed: 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=55730&view=auto
==============================================================================
(empty)
Removed: 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=55730&view=auto
==============================================================================
(empty)
Modified: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-gc-assign-ivar-1.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-gc-assign-ivar-1.m?rev=55731&r1=55730&r2=55731&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-gc-assign-ivar-1.m (original)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc-gc-assign-ivar-1.m Wed Sep 3 15:54:34 2008
@@ -20,21 +20,25 @@
static
id objc_assign_strongCast(id value, id *dest) {
- printf("assign_ivar got value %p, dest %p\n", value, dest);
+ /* APPLE LOCAL default to Wformat-security 5764921 */
+ printf("assign_ivar got value %p, dest %p\n", (void*)value, (void*)dest);
printf("wanted %p, %p\n", WantedVal, WantedDest);
return nil;
}
static
id objc_assign_global(id value, id *dest) {
- printf("assign_ivar got value %p, dest %p\n", value, dest);
+ /* APPLE LOCAL default to Wformat-security 5764921 */
+ printf("assign_ivar got value %p, dest %p\n", (void*)value, dest);
printf("wanted %p, %p\n", WantedVal, WantedDest);
return nil;
}
static
id objc_assign_ivar(id value, id dest, ptrdiff_t offset) {
- printf("assign_ivar got value %p, dest %p, offset %ld\n", value, dest, offset);
- printf("wanted %p, %p, %ld\n", WantedVal, WantedDest, WantedOffset);
+ /* APPLE LOCAL default to Wformat-security 5764921 */
+ printf("assign_ivar got value %p, dest %p, offset %d\n", (void*)value, (void*)dest, (int)offset);
+ /* APPLE LOCAL default to Wformat-security 5764921 */
+ printf("wanted %p, %p, %d\n", WantedVal, WantedDest, (int)WantedOffset);
if (value != WantedVal)
abort ();
if (dest != WantedDest)
Modified: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-ivar-offset.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-ivar-offset.m?rev=55731&r1=55730&r2=55731&view=diff
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-ivar-offset.m (original)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-ivar-offset.m Wed Sep 3 15:54:34 2008
@@ -32,7 +32,8 @@
const char *ivartype = ivar_getTypeEncoding(iv_list[i]);
fprintf(stderr, "type: %s\n", ivartype);
ptrdiff_t ivaroffset = ivar_getOffset(iv_list[i]);
- fprintf(stderr, "offset: %p\n", ivaroffset);
+ /* APPLE LOCAL default to Wformat-security 5764921 */
+ fprintf(stderr, "offset: %x\n", (int)ivaroffset);
fprintf(stderr, "\n");
}
return 0;
Removed: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-protocol-3.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-protocol-3.m?rev=55730&view=auto
==============================================================================
(empty)
Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-nowarn-proto.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-nowarn-proto.m?rev=55731&view=auto
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-nowarn-proto.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-nowarn-proto.m Wed Sep 3 15:54:34 2008
@@ -0,0 +1,25 @@
+/* APPLE LOCAL file radar 5453108 */
+/* Check that no warning is issued when protocl's method matches a
+ @dynamic implementation of a property with same name. */
+/* { dg-options "-Wall -Werror" } */
+
+ at protocol QueryItem
+
+- (id) children;
+
+ at end
+
+
+ at interface QueryNode <QueryItem>
+
+ at property (retain) id children;
+
+ at end
+
+
+ at implementation QueryNode
+
+ at dynamic children;
+
+ at end
+
Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-1.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-1.m?rev=55731&view=auto
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-1.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-1.m Wed Sep 3 15:54:34 2008
@@ -0,0 +1,30 @@
+/* APPLE LOCAL file radar 5435299 */
+/* Test for synthesizing of one ivar for a synthesized property. */
+/* { dg-options "-fnew-property-ivar-synthesis -m64 -std=c99 -lobjc" { target i?86*-*-darwin* } } */
+/* { dg-options "-fnew-property-ivar-synthesis -fobjc-new-property -std=c99 -lobjc" { target arm*-*-darwin* } } */
+/* { dg-do run { target i?86*-*-darwin* arm*-*-darwin* } } */
+
+#ifdef __OBJC2__
+#import <objc/Object.h>
+#import <objc/runtime.h>
+#include <assert.h>
+
+ at interface Test1 : Object
+ at property int prop;
+ at end
+ at implementation Test1
+ at synthesize prop;
+ at end
+
+int main() {
+ unsigned int count;
+ Ivar *list;
+ Ivar ivar;
+ list = class_copyIvarList([Test1 class], &count);
+ assert(count == 1);
+ ivar = class_getInstanceVariable([Test1 class], "prop");
+ assert(ivar);
+ return 0;
+}
+
+#endif
Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-2.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-2.m?rev=55731&view=auto
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-2.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-2.m Wed Sep 3 15:54:34 2008
@@ -0,0 +1,33 @@
+/* APPLE LOCAL file radar 5435299 */
+/* Test for property backed by generated ivar with specified name. */
+/* { dg-options "-fnew-property-ivar-synthesis -m64 -std=c99 -lobjc" { target i?86*-*-darwin* } } */
+/* { dg-options "-fnew-property-ivar-synthesis -fobjc-new-property -std=c99 -lobjc" { target arm*-*-darwin* } } */
+/* { dg-do run { target i?86*-*-darwin* arm*-*-darwin* } } */
+
+
+#ifdef __OBJC2__
+#import <objc/Object.h>
+#import <objc/runtime.h>
+#include <assert.h>
+
+ at interface Test2 : Object
+ at property int prop;
+ at end
+ at implementation Test2
+ at synthesize prop = prop_ivar;
+ at end
+
+int main() {
+ unsigned int count;
+ Ivar *list;
+ Ivar ivar;
+ list = class_copyIvarList([Test2 class], &count);
+ assert(count == 1);
+ ivar = class_getInstanceVariable([Test2 class], "prop");
+ assert(!ivar);
+ ivar = class_getInstanceVariable([Test2 class], "prop_ivar");
+ assert(ivar);
+ return 0;
+}
+
+#endif
Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-3.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-3.m?rev=55731&view=auto
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-3.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-3.m Wed Sep 3 15:54:34 2008
@@ -0,0 +1,19 @@
+/* APPLE LOCAL file radar 5435299 */
+/* Multiple @synthesize of a single property is error. */
+/* { dg-options "-mmacosx-version-min=10.5 -fnew-property-ivar-synthesis" { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+/* { dg-options "-fnew-property-ivar-synthesis -fobjc-new-property" { target arm*-*-darwin* } } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+#import <objc/Object.h>
+
+ at interface Test3 : Object
+{
+ int prop;
+}
+ at property int prop;
+ at end
+ at implementation Test3
+ at synthesize prop;
+ at synthesize prop; /* { dg-error "synthesized properties \\'prop\\' and \\'prop\\' both claim ivar \\'prop\\'" } */
+ /* { dg-error "property \\'prop\\' is already implemented" "" { target *-*-* } 17 } */
+ at end
Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-32-5.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-32-5.m?rev=55731&view=auto
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-32-5.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-32-5.m Wed Sep 3 15:54:34 2008
@@ -0,0 +1,43 @@
+/* APPLE LOCAL file radar 5435299 */
+/* Test that one ivar cannot back multiple properties. */
+/* { dg-options "-fnew-property-ivar-synthesis -mmacosx-version-min=10.5 -m32" { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+/* { dg-options "-fnew-property-ivar-synthesis -fobjc-new-property" { target arm*-*-darwin* } } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+#import <objc/Object.h>
+
+ at interface Test5_1 : Object
+{
+ int ivar;
+}
+ at property int ivar;
+ at property int prop2;
+ at end
+ at implementation Test5_1
+ at synthesize ivar;
+ at synthesize prop2 = ivar; /* { dg-error "synthesized properties \\'prop2\\' and \\'ivar\\' both claim ivar \\'ivar\\'" } */
+ at end
+
+ at interface Test5_2 : Object
+{
+ int ivar;
+}
+ at property int prop2;
+ at property int ivar;
+ at end
+ at implementation Test5_2
+ at synthesize prop2 = ivar;
+ at synthesize ivar; /* { dg-error "synthesized properties \\'ivar\\' and \\'prop2\\' both claim ivar \\'ivar\\'" } */
+ at end
+
+ at interface Test5_3 : Object
+{
+ int ivar;
+}
+ at property int prop1;
+ at property int prop2;
+ at end
+ at implementation Test5_3
+ at synthesize prop1 = ivar;
+ at synthesize prop2 = ivar; /* { dg-error "synthesized properties \\'prop2\\' and \\'prop1\\' both claim ivar \\'ivar\\'" } */
+ at end
Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-4.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-4.m?rev=55731&view=auto
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-4.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-4.m Wed Sep 3 15:54:34 2008
@@ -0,0 +1,18 @@
+/* APPLE LOCAL file radar 5435299 */
+/* Type mismatch of a property and its ivar. */
+/* { 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* } } */
+
+#import <objc/Object.h>
+
+ at interface Test4 : Object
+{
+ char ivar;
+}
+ at property int prop;
+ at end
+ at implementation Test4
+ at synthesize prop = ivar; /* { dg-error "type of property \\'prop\\' does not match type of ivar \\'ivar\\'" } */
+ at end
+
Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-5.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-5.m?rev=55731&view=auto
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-5.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-5.m Wed Sep 3 15:54:34 2008
@@ -0,0 +1,75 @@
+/* APPLE LOCAL file radar 5435299 */
+/* Test that one ivar cannot back multiple properties. */
+/* { dg-options "-fnew-property-ivar-synthesis -mmacosx-version-min=10.5 -m64" { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+/* { dg-options "-fnew-property-ivar-synthesis -fobjc-new-property" { target arm*-*-darwin* } } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+#import <objc/Object.h>
+
+#ifdef __OBJC2__
+
+ at interface Test5_1 : Object
+{
+ int ivar;
+}
+ at property int ivar;
+ at property int prop2;
+ at end
+ at implementation Test5_1
+ at synthesize ivar;
+ at synthesize prop2 = ivar; /* { dg-error "synthesized properties \\'prop2\\' and \\'ivar\\' both claim ivar \\'ivar\\'" } */
+ at end
+
+ at interface Test5_2 : Object
+{
+ int ivar;
+}
+ at property int prop2;
+ at property int ivar;
+ at end
+ at implementation Test5_2
+ at synthesize prop2 = ivar;
+ at synthesize ivar; /* { dg-error "synthesized properties \\'ivar\\' and \\'prop2\\' both claim ivar \\'ivar\\'" } */
+ at end
+
+ at interface Test5_3 : Object
+{
+ int ivar;
+}
+ at property int prop1;
+ at property int prop2;
+ at end
+ at implementation Test5_3
+ at synthesize prop1 = ivar;
+ at synthesize prop2 = ivar; /* { dg-error "synthesized properties \\'prop2\\' and \\'prop1\\' both claim ivar \\'ivar\\'" } */
+ at end
+
+
+ at interface Test5_4 : Object
+ at property int prop1;
+ at property int prop2;
+ at end
+ at implementation Test5_4
+ at synthesize prop1;
+ at synthesize prop2 = prop1; /* { dg-error "synthesized properties \\'prop2\\' and \\'prop1\\' both claim ivar \\'prop1\\'" } */
+ at end
+
+ at interface Test5_5 : Object
+ at property int prop1;
+ at property int prop2;
+ at end
+ at implementation Test5_5
+ at synthesize prop1 = prop2;
+ at synthesize prop2; /* { dg-error "synthesized properties \\'prop2\\' and \\'prop1\\' both claim ivar \\'prop2\\'" } */
+ at end
+
+ at interface Test5_6 : Object
+ at property int prop1;
+ at property int prop2;
+ at end
+ at implementation Test5_6
+ at synthesize prop1 = ivar;
+ at synthesize prop2 = ivar; /* { dg-error "synthesized properties \\'prop2\\' and \\'prop1\\' both claim ivar \\'ivar\\'" } */
+ at end
+
+#endif
Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-6.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-6.m?rev=55731&view=auto
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-6.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-6.m Wed Sep 3 15:54:34 2008
@@ -0,0 +1,27 @@
+/* APPLE LOCAL file radar 5435299 */
+/* A synthesize property cannot use an ivar in its super class. */
+/* { dg-options "-fnew-property-ivar-synthesis -mmacosx-version-min=10.5 -m64" { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+/* { dg-options "-fnew-property-ivar-synthesis -fobjc-new-property" { target arm*-*-darwin* } } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+#ifdef __OBJC2__
+#import <objc/Object.h>
+
+ at interface Test6Super : Object
+{
+ int prop;
+}
+ at end
+
+ at implementation Test6Super @end
+
+ at interface Test6 : Test6Super
+ at property int prop;
+ at end
+
+ at implementation Test6
+ at synthesize prop; /* { dg-error "property \\'prop\\' attempting to use ivar \\'prop\\' in super class \\'Test6\\'" } */
+ at end
+
+#endif
+
Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-7.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-7.m?rev=55731&view=auto
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-7.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-7.m Wed Sep 3 15:54:34 2008
@@ -0,0 +1,27 @@
+/* APPLE LOCAL file radar 5435299 */
+/* Test that synthesize ivar visibility is @private */
+/* { dg-options "-fnew-property-ivar-synthesis -mmacosx-version-min=10.5 -m64" { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+/* { dg-options "-fnew-property-ivar-synthesis -fobjc-new-property" { target arm*-*-darwin* } } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+#ifdef __OBJC2__
+#import <objc/Object.h>
+
+ at interface Test7 : Object
+ at property int prop;
+ at end
+
+ at implementation Test7
+ at synthesize prop;
+ at end
+
+ at interface Test7Sub : Test7 @end
+
+ at implementation Test7Sub
+-(int)method { return prop; } /* { dg-error "instance variable \\'prop\\' is declared private" } */
+ /* { dg-error "\\(Each undeclared identifier is reported only once" "" { target *-*-* } 21 } */
+ /* { dg-error "for each function it appears in.\\)" "" { target *-*-* } 21 } */
+ at end
+
+#endif
+
Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-8.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-8.m?rev=55731&view=auto
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-8.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-8.m Wed Sep 3 15:54:34 2008
@@ -0,0 +1,65 @@
+/* APPLE LOCAL file radar 5435299 */
+/* Enforce order of generated ivars */
+/* { dg-options "-fnew-property-ivar-synthesis -m64 -std=c99 -lobjc" { target i?86*-*-darwin* } } */
+/* { dg-options "-fnew-property-ivar-synthesis -fobjc-new-property -std=c99 -lobjc" { target arm*-*-darwin* } } */
+/* { dg-do run { target i?86*-*-darwin* arm*-*-darwin* } } */
+
+
+#ifdef __OBJC2__
+#import <objc/Object.h>
+#import <objc/runtime.h>
+#include <assert.h>
+
+ at interface Test8 : Object
+{
+ int ivar1;
+ int ivar2;
+}
+// order of @property declarations has no effect on ivar order
+ at property int prop5;
+ at property int prop4;
+ at property int prop6;
+ at property int prop1;
+ at property int prop3;
+ at property int prop2;
+ at end
+
+ at implementation Test8
+// resulting ivar order should be: { ivar1; ivar2; prop3; prop4; prop5; prop6; }
+ at synthesize prop1 = ivar1;
+ at synthesize prop5; // prop5 ivar is generated 1st after ivar2
+ at synthesize prop2 = ivar2;
+ at synthesize prop3, prop4, prop6;
+ at end
+
+int main() {
+ Ivar ivar, ivar2, ivar3, ivar4, ivar5, ivar6;
+ ivar = class_getInstanceVariable([Test8 class], "ivar1");
+ assert(ivar);
+
+ ivar2 = class_getInstanceVariable([Test8 class], "ivar2");
+ assert(ivar2);
+
+ assert(ivar_getOffset(ivar) < ivar_getOffset(ivar2));
+
+ ivar3 = class_getInstanceVariable([Test8 class], "prop5");
+ assert(ivar3);
+ assert(ivar_getOffset(ivar2) < ivar_getOffset(ivar3));
+
+ ivar4 = class_getInstanceVariable([Test8 class], "prop3");
+ assert(ivar4);
+ assert(ivar_getOffset(ivar3) < ivar_getOffset(ivar4));
+
+ ivar5 = class_getInstanceVariable([Test8 class], "prop4");
+ assert(ivar5);
+ assert(ivar_getOffset(ivar4) < ivar_getOffset(ivar5));
+
+ ivar6 = class_getInstanceVariable([Test8 class], "prop6");
+ assert(ivar6);
+ assert(ivar_getOffset(ivar5) < ivar_getOffset(ivar6));
+
+ return 0;
+}
+
+#endif
+
Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-9.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-9.m?rev=55731&view=auto
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-9.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/property-synthesize-ivar-9.m Wed Sep 3 15:54:34 2008
@@ -0,0 +1,43 @@
+/* APPLE LOCAL file radar 5435299 */
+/* The ivar's C scope extends from the @synthesize statement to the end of the file */
+/* { dg-options "-fnew-property-ivar-synthesis -mmacosx-version-min=10.5 -m64" { target powerpc*-*-darwin* i?86*-*-darwin* } } */
+/* { dg-options "-fnew-property-ivar-synthesis -fobjc-new-property" { target arm*-*-darwin* } } */
+/* { dg-do compile { target *-*-darwin* } } */
+
+#ifdef __OBJC2__
+#import <objc/Object.h>
+
+ at interface Test9_1 : Object
+ at property int prop;
+ at end
+
+ at implementation Test9_1
+-(int) method1 { return prop; } /* { dg-error "\\'prop\\' undeclared" } */
+ /* { dg-error "\\(Each undeclared identifier is reported only once" "" { target *-*-* } 15 } */
+ /* { dg-error "for each function it appears in.\\)" "" { target *-*-* } 15 } */
+ at synthesize prop;
+-(int) method2 { return prop; }
+ at end
+
+ at implementation Test9_1 (Category)
+-(int) method3 { return prop; }
+ at end
+
+ at interface Test9_2 : Object
+ at property int prop;
+ at end
+
+ at implementation Test9_2
+-(int) method1 { return prop_ivar; } /* { dg-error "\\'prop_ivar\\' undeclared" } */
+-(int) method2 { return prop; } /* { dg-error "\\'prop\\' undeclared" } */
+ at synthesize prop = prop_ivar;
+-(int) method3 { return prop_ivar; }
+-(int) method4 { return prop; } /* { dg-error "\\'prop\\' undeclared" } */
+ at end
+
+ at implementation Test9_2 (Category)
+-(int) method5 { return prop_ivar; }
+-(int) method6 { return prop; } /* { dg-error "\\'prop\\' undeclared" } */
+ at end
+
+#endif
Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/protocol-array-ivar.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/protocol-array-ivar.m?rev=55731&view=auto
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/protocol-array-ivar.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/protocol-array-ivar.m Wed Sep 3 15:54:34 2008
@@ -0,0 +1,101 @@
+/* APPLE LOCAL file radar 6164211 */
+/* Check that when we build a reference to array of 'id' qualified protocols,
+ we preserve protoloc-ness of the array elements so method prototype will
+ be correct. Program must build and run without abort. */
+/* { dg-options "-mmacosx-version-min=10.5 -framework Cocoa" } */
+/* { dg-do run } */
+
+#import <Cocoa/Cocoa.h>
+
+static void compare (int val)
+{
+ if (val != 500)
+ abort();
+}
+
+ at protocol myProto <NSObject>
+- (int) width;
+ at end;
+
+ at interface myObject : NSObject < myProto>
+
+ at end
+
+ at implementation myObject
+
+- (int) width
+{
+ return 500;
+}
+
+ at end
+
+
+ at interface myController : NSObject
+{
+ id<myProto> manyProtos[10];
+ id<myProto> singleProto;
+}
+
+ at end
+
+
+ at implementation myController
+
+- init
+{
+ if ([super init] != nil)
+ {
+ int x;
+ for (x=0;x<10; x++)
+ manyProtos[x] = [[myObject alloc] init];
+
+ singleProto = [[myObject alloc] init];
+
+ return self;
+ }
+ else return nil;
+}
+
+-(void)dealloc
+{
+ int x;
+ for (x=0; x<10; x++)
+ [manyProtos[x] release];
+
+ [super dealloc];
+}
+
+- bugOut
+{
+ compare([manyProtos[0] width]);
+ compare([(id<myProto>)manyProtos[0] width]);
+
+ compare([manyProtos[1] width]);
+ compare([(id<myProto>)manyProtos[1] width]);
+
+ compare([manyProtos[2] width]);
+ compare([(id<myProto>)manyProtos[2] width]);
+
+ compare([singleProto width]);
+ compare([(id<myProto>)singleProto width]);
+
+
+ return self;
+}
+
+ at end
+
+
+
+int main (int argc, const char * argv[]) {
+ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
+
+ myController *test;
+ test = [[myController alloc] init];
+ [test bugOut];
+ [test release];
+
+ [pool drain];
+ return 0;
+}
Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/synthesized-unknown-ivar-warn.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/synthesized-unknown-ivar-warn.m?rev=55731&view=auto
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/synthesized-unknown-ivar-warn.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/synthesized-unknown-ivar-warn.m Wed Sep 3 15:54:34 2008
@@ -0,0 +1,21 @@
+/* APPLE LOCAL file radar 5847641 */
+/* Warn if an unknown ivar has been specified in @synthesize. This is for default
+ abi only. */
+/* { dg-options "-fobjc-abi-version=1" } */
+
+ at interface MyStupidClass {
+ id _bar;
+}
+ at property(readwrite, retain) id foo;
+ at end
+
+ at implementation MyStupidClass
+ at synthesize foo = _foo; /* { dg-warning "ivar name \'_foo\' specified on the synthesized property" } */
+
+- (id)foo {
+ return _bar;
+}
+- (void)setFoo:(id)newFoo {
+}
+ at end
+
Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/type-nsobject-attribute-2.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/type-nsobject-attribute-2.m?rev=55731&view=auto
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/type-nsobject-attribute-2.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/type-nsobject-attribute-2.m Wed Sep 3 15:54:34 2008
@@ -0,0 +1,53 @@
+/* APPLE LOCAL file radar 5595325 */
+/* Test for implementation of __attribute__ ((NSObject)) to make a struct pointer
+ a first class objective-c pointer to object. */
+/* { dg-options "-mmacosx-version-min=10.6 -Werror -framework Foundation" } */
+/* { dg-do run { target *-*-darwin* } } */
+
+#import <Foundation/Foundation.h>
+
+typedef struct _foo *__attribute__((NSObject)) Foo_ref;
+
+ at interface TestObject : NSObject {
+ Foo_ref dict;
+}
+ at property(retain) Foo_ref dict;
+ at end
+
+ at implementation TestObject
+ at synthesize dict;
+ at end
+
+int main(int argc, char *argv[]) {
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ NSDictionary *dictRef = [NSDictionary dictionaryWithObject:@"Object" forKey:@"key"];
+ Foo_ref foo = (Foo_ref)dictRef;
+ TestObject *to = [[TestObject alloc] init];
+
+ // do Properties retain?
+ int before = [dictRef retainCount];
+ to.dict = foo;
+ int after = [dictRef retainCount];
+
+ if (after <= before) {
+ abort();
+ }
+ if ([foo retainCount] != [dictRef retainCount]) {
+ abort();
+ }
+
+ // do Blocks retain?
+ {
+ void (^block)(void) = ^{
+ [foo self];
+ };
+ before = [foo retainCount];
+ id save = [block copy];
+ after = [foo retainCount];
+ if (after <= before) {
+ abort();
+ }
+ }
+ return 0;
+}
+
Added: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/type-nsobject-attribute.m
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/type-nsobject-attribute.m?rev=55731&view=auto
==============================================================================
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/type-nsobject-attribute.m (added)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/type-nsobject-attribute.m Wed Sep 3 15:54:34 2008
@@ -0,0 +1,44 @@
+/* APPLE LOCAL file radar 5595325 */
+/* Test for implementation of __attribute__ ((NSObject)) to make a struct pointer
+ a first class objective-c pointer to object. */
+/* { dg-options "-mmacosx-version-min=10.6 -framework Foundation" } */
+/* { dg-do run { target *-*-darwin* } } */
+
+#import <Foundation/Foundation.h>
+
+typedef struct CGColor * __attribute__ ((NSObject)) CGColorRef;
+static int count;
+static CGColorRef tmp = 0;
+
+ at interface HandTested : NSObject {
+ at public
+ CGColorRef x;
+}
+ at property(copy) CGColorRef x;
+ at end
+
+void objc_setProperty(id self, SEL _sel, ptrdiff_t offset, id value, BOOL atomic, BOOL shouldCopy) {
+ if (count != 0 || !shouldCopy)
+ abort ();
+ ++ count;
+ ((HandTested *)self)->x = value;
+}
+
+id objc_getProperty(id self, SEL _sel, ptrdiff_t offset, BOOL atomic) {
+ if (count != 1)
+ abort();
+ return (id)((HandTested *)self)->x;
+}
+
+ at implementation HandTested
+ at synthesize x=x;
+ at end
+
+int main(char *argc, char *argv[]) {
+ HandTested *to = [HandTested new];
+ to.x = tmp; // setter
+ if (tmp != to.x)
+ abort ();
+ return 0;
+}
+
More information about the llvm-commits
mailing list