diff options
author | Iain Sandoe <iains@gcc.gnu.org> | 2010-11-05 10:03:54 +0000 |
---|---|---|
committer | Iain Sandoe <iains@gcc.gnu.org> | 2010-11-05 10:03:54 +0000 |
commit | a5ad8c30d627e2e243ebd0662c2d4dac778462d5 (patch) | |
tree | 8566f6b3a64cf422fda52552e87169f806c34d7a /gcc | |
parent | 0f59b812398ae891259f0bd563ca2a23238408a6 (diff) | |
download | gcc-a5ad8c30d627e2e243ebd0662c2d4dac778462d5.zip gcc-a5ad8c30d627e2e243ebd0662c2d4dac778462d5.tar.gz gcc-a5ad8c30d627e2e243ebd0662c2d4dac778462d5.tar.bz2 |
NeXT runtime compatibility changes.
gcc/testsuite:
* objc.dg/torture/forward-1.m: Restore for m32 NeXT.
* objc.dg/demangle-1.m: Remove NeXT ifdef around +initialize
declaration and implementation.
* objc.dg/property/dotsyntax-3.m: XFAIL NeXT m64 run.
* obj-c++.dg/property/at-property-13.mm: Likewise.
* obj-c++.dg/property/fsf-property-method-access.mm: Likewise.
* obj-c++.dg/property/property-1.mm: Likewise.
* obj-c++.dg/property/at-property-7.mm: Likewise.
* obj-c++.dg/property/at-property-9.mm: Likewise.
* obj-c++.dg/property/dotsyntax-2.mm: Likewise.
* obj-c++.dg/property/at-property-10.mm: Likewise.
* obj-c++.dg/property/synthesize-2.mm: Likewise.
* obj-c++.dg/property/at-property-12.mm: Likewise.
* obj-c++.dg/property/fsf-property-basic.mm: Likewise.
* obj-c++.dg/property/fsf-property-named-ivar.mm: Likewise.
* obj-c++.dg/property/at-property-6.mm: Likewise.
* obj-c++.dg/property/at-property-8.mm: Likewise.
* obj-c++.dg/property/dotsyntax-1.mm: Likewise.
* obj-c++.dg/property/dotsyntax-3.mm: Likewise.
* obj-c++.dg/property/at-property-11.mm: Likewise.
* obj-c++.dg/template-8.mm: Likewise.
* obj-c++.dg/encode-3.mm: Use abort (), cast char types.
* obj-c++.dg/demangle-2.mm: Add +initialize:, XFAIL NeXT m64.
* obj-c++.dg/property/at-property-2.mm: Comment out a case that ICEs and
put a FIXME for this.
* obj-c++.dg/property/property-2.mm: Remove.
* obj-c++.dg/property/property-3.mm: Remove.
From-SVN: r166352
Diffstat (limited to 'gcc')
26 files changed, 152 insertions, 157 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6ef03bd..2041a7a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,33 @@ +2010-11-05 Iain Sandoe <iains@gcc.gnu.org> + + * objc.dg/torture/forward-1.m: Restore for m32 NeXT. + * objc.dg/demangle-1.m: Remove NeXT ifdef around +initialize + declaration and implementation. + * objc.dg/property/dotsyntax-3.m: XFAIL NeXT m64 run. + * obj-c++.dg/property/at-property-13.mm: Likewise. + * obj-c++.dg/property/fsf-property-method-access.mm: Likewise. + * obj-c++.dg/property/property-1.mm: Likewise. + * obj-c++.dg/property/at-property-7.mm: Likewise. + * obj-c++.dg/property/at-property-9.mm: Likewise. + * obj-c++.dg/property/dotsyntax-2.mm: Likewise. + * obj-c++.dg/property/at-property-10.mm: Likewise. + * obj-c++.dg/property/synthesize-2.mm: Likewise. + * obj-c++.dg/property/at-property-12.mm: Likewise. + * obj-c++.dg/property/fsf-property-basic.mm: Likewise. + * obj-c++.dg/property/fsf-property-named-ivar.mm: Likewise. + * obj-c++.dg/property/at-property-6.mm: Likewise. + * obj-c++.dg/property/at-property-8.mm: Likewise. + * obj-c++.dg/property/dotsyntax-1.mm: Likewise. + * obj-c++.dg/property/dotsyntax-3.mm: Likewise. + * obj-c++.dg/property/at-property-11.mm: Likewise. + * obj-c++.dg/template-8.mm: Likewise. + * obj-c++.dg/encode-3.mm: Use abort (), cast char types. + * obj-c++.dg/demangle-2.mm: Add +initialize:, XFAIL NeXT m64. + * obj-c++.dg/property/at-property-2.mm: Comment out a case that ICEs and + put a FIXME for this. + * obj-c++.dg/property/property-2.mm: Remove. + * obj-c++.dg/property/property-3.mm: Remove. + 2010-11-05 Jakub Jelinek <jakub@redhat.com> PR debug/46307 @@ -76,10 +106,9 @@ * objc.dg/encode-7-next.m: Use next-mapping.h, ignore deprecation warnings. * objc.dg/encode-7-next-64bit.m: Use next-mapping.h, ignore - deprecation warnings. Use Object1 implemenation. + deprecation warnings. Use Object1 implementation. * objc.dg/demangle-1.m: Provide +initialize. XFAIL m64 NeXT run. - * objc/execute/forward-1.m: Move to objc.dg/torture and reduce scope - to m32 NeXT. + * objc/execute/forward-1.m: Remove. * objc/execute/forward-1.x: Remove. 2010-11-04 Jason Merrill <jason@redhat.com> diff --git a/gcc/testsuite/obj-c++.dg/demangle-2.mm b/gcc/testsuite/obj-c++.dg/demangle-2.mm index c58a4f8..f282085 100644 --- a/gcc/testsuite/obj-c++.dg/demangle-2.mm +++ b/gcc/testsuite/obj-c++.dg/demangle-2.mm @@ -1,5 +1,6 @@ /* Test demangling an Objective-C method. */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ #include <cstring> #include <cstdlib> @@ -13,6 +14,7 @@ + (int) testFunction1; + (int) test_function2; + (int) __testFunction3: (int)unused andArgument: (char)unused2; ++ (id) initialize; @end @implementation DemangleTest @@ -31,6 +33,7 @@ std::cout << __PRETTY_FUNCTION__ << "\n"; return std::strcmp (__PRETTY_FUNCTION__, "+[DemangleTest __testFunction3:andArgument:]"); } ++ (id) initialize { return self; } @end int main () diff --git a/gcc/testsuite/obj-c++.dg/encode-3.mm b/gcc/testsuite/obj-c++.dg/encode-3.mm index 8627a77..44f288d 100644 --- a/gcc/testsuite/obj-c++.dg/encode-3.mm +++ b/gcc/testsuite/obj-c++.dg/encode-3.mm @@ -1,8 +1,8 @@ /* { dg-do run } */ extern "C" { -extern void _exit(int); -extern int strcmp(const char *, const char *); +extern void abort (void); +extern int strcmp (const char *, const char *); } template <class T> @@ -36,16 +36,16 @@ int main(void) { const char *encode = @encode(long); if (strcmp (encode, L)) - _exit(-(__LINE__)); + abort (); - if (strcmp (enc, "{Vec<float>=ff" L "q}")) - _exit(-(__LINE__)); + if (strcmp (enc, (const char *)"{Vec<float>=ff" L "q}")) + abort (); - if (strcmp (enc2, "{Vec<double>=dd" L "q}")) - _exit(-(__LINE__)); + if (strcmp (enc2, (const char *)"{Vec<double>=dd" L "q}")) + abort (); - if (strcmp (enc3, "{?=f[10d]i" L "q{Vec<const signed char>=rcrc" L "q}}")) - _exit(-(__LINE__)); + if (strcmp (enc3, (const char *)"{?=f[10d]i" L "q{Vec<const signed char>=rcrc" L "q}}")) + abort (); return 0; } diff --git a/gcc/testsuite/obj-c++.dg/property/at-property-10.mm b/gcc/testsuite/obj-c++.dg/property/at-property-10.mm index 83494ec..b867896 100644 --- a/gcc/testsuite/obj-c++.dg/property/at-property-10.mm +++ b/gcc/testsuite/obj-c++.dg/property/at-property-10.mm @@ -1,5 +1,6 @@ /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ /* Test the property syntax in a number of expressions. */ diff --git a/gcc/testsuite/obj-c++.dg/property/at-property-11.mm b/gcc/testsuite/obj-c++.dg/property/at-property-11.mm index 8288052..51c4023 100644 --- a/gcc/testsuite/obj-c++.dg/property/at-property-11.mm +++ b/gcc/testsuite/obj-c++.dg/property/at-property-11.mm @@ -1,5 +1,6 @@ /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ /* Test that properties are found even if implemented in superclasses. */ diff --git a/gcc/testsuite/obj-c++.dg/property/at-property-12.mm b/gcc/testsuite/obj-c++.dg/property/at-property-12.mm index 8d28bde..89001e7 100644 --- a/gcc/testsuite/obj-c++.dg/property/at-property-12.mm +++ b/gcc/testsuite/obj-c++.dg/property/at-property-12.mm @@ -1,5 +1,6 @@ /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ /* Test atomic, assign synthesized methods. */ diff --git a/gcc/testsuite/obj-c++.dg/property/at-property-13.mm b/gcc/testsuite/obj-c++.dg/property/at-property-13.mm index 5a5dcbbf..6786c3a 100644 --- a/gcc/testsuite/obj-c++.dg/property/at-property-13.mm +++ b/gcc/testsuite/obj-c++.dg/property/at-property-13.mm @@ -1,5 +1,6 @@ /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ /* Test retain and copy synthesized methods. */ diff --git a/gcc/testsuite/obj-c++.dg/property/at-property-2.mm b/gcc/testsuite/obj-c++.dg/property/at-property-2.mm index a97c33e..7966b9a 100644 --- a/gcc/testsuite/obj-c++.dg/property/at-property-2.mm +++ b/gcc/testsuite/obj-c++.dg/property/at-property-2.mm @@ -8,6 +8,7 @@ } @property int name __attribute__((deprecated)); @property int table __attribute__((xxx)); /* { dg-warning ".xxx. attribute directive ignored" } */ -@property void function (void); /* { dg-error "can.t make .function. into a method" } */ -@property typedef int j; /* { dg-error "invalid type for property" } */ +/* FIXME: the test below should not ICE. +@property void function (void); { dg-error "can.t make .function. into a method" } */ +@property typedef int j; /* { dg-error "invalid type for property" } */ @end diff --git a/gcc/testsuite/obj-c++.dg/property/at-property-6.mm b/gcc/testsuite/obj-c++.dg/property/at-property-6.mm index 8b7346b..f2e2044 100644 --- a/gcc/testsuite/obj-c++.dg/property/at-property-6.mm +++ b/gcc/testsuite/obj-c++.dg/property/at-property-6.mm @@ -1,5 +1,6 @@ /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ /* Test the property syntax with non-synthesized setter/getter and with standard names. */ diff --git a/gcc/testsuite/obj-c++.dg/property/at-property-7.mm b/gcc/testsuite/obj-c++.dg/property/at-property-7.mm index bace242..dc8e90f 100644 --- a/gcc/testsuite/obj-c++.dg/property/at-property-7.mm +++ b/gcc/testsuite/obj-c++.dg/property/at-property-7.mm @@ -1,5 +1,6 @@ /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ /* Test the property syntax with non-synthesized setter/getter and with a non-standard name for the getter. */ diff --git a/gcc/testsuite/obj-c++.dg/property/at-property-8.mm b/gcc/testsuite/obj-c++.dg/property/at-property-8.mm index a290dd3..f404165 100644 --- a/gcc/testsuite/obj-c++.dg/property/at-property-8.mm +++ b/gcc/testsuite/obj-c++.dg/property/at-property-8.mm @@ -1,5 +1,6 @@ /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ /* Test the property syntax with non-synthesized setter/getter and with a non-standard name for the setter. */ diff --git a/gcc/testsuite/obj-c++.dg/property/at-property-9.mm b/gcc/testsuite/obj-c++.dg/property/at-property-9.mm index be52e37..4b2b64d 100644 --- a/gcc/testsuite/obj-c++.dg/property/at-property-9.mm +++ b/gcc/testsuite/obj-c++.dg/property/at-property-9.mm @@ -1,5 +1,6 @@ /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ /* Test the property syntax with synthesized setter/getter and with a non-standard name for the getter and setter. */ diff --git a/gcc/testsuite/obj-c++.dg/property/dotsyntax-1.mm b/gcc/testsuite/obj-c++.dg/property/dotsyntax-1.mm index 8bc3b3a..8922f5f 100644 --- a/gcc/testsuite/obj-c++.dg/property/dotsyntax-1.mm +++ b/gcc/testsuite/obj-c++.dg/property/dotsyntax-1.mm @@ -1,5 +1,6 @@ /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ /* Test the 'dot syntax' without a declarated property. */ diff --git a/gcc/testsuite/obj-c++.dg/property/dotsyntax-2.mm b/gcc/testsuite/obj-c++.dg/property/dotsyntax-2.mm index ba615a3..03e49ae 100644 --- a/gcc/testsuite/obj-c++.dg/property/dotsyntax-2.mm +++ b/gcc/testsuite/obj-c++.dg/property/dotsyntax-2.mm @@ -1,5 +1,6 @@ /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ /* Test the 'dot syntax' without a declarated property. This tests the case where only the setter (or only the getter) exists. */ diff --git a/gcc/testsuite/obj-c++.dg/property/dotsyntax-3.mm b/gcc/testsuite/obj-c++.dg/property/dotsyntax-3.mm index 5991962..d347806 100644 --- a/gcc/testsuite/obj-c++.dg/property/dotsyntax-3.mm +++ b/gcc/testsuite/obj-c++.dg/property/dotsyntax-3.mm @@ -1,5 +1,6 @@ /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ /* Test the 'dot syntax' without a declarated property. This tests the case where the object is a Class. */ diff --git a/gcc/testsuite/obj-c++.dg/property/fsf-property-basic.mm b/gcc/testsuite/obj-c++.dg/property/fsf-property-basic.mm index e7f8cbb..2c3774a 100644 --- a/gcc/testsuite/obj-c++.dg/property/fsf-property-basic.mm +++ b/gcc/testsuite/obj-c++.dg/property/fsf-property-basic.mm @@ -1,5 +1,6 @@ /* Basic test, auto-generated getter/setter based on property name. */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ #ifdef __cplusplus extern "C" { diff --git a/gcc/testsuite/obj-c++.dg/property/fsf-property-method-access.mm b/gcc/testsuite/obj-c++.dg/property/fsf-property-method-access.mm index 8053c84..11efb4a 100644 --- a/gcc/testsuite/obj-c++.dg/property/fsf-property-method-access.mm +++ b/gcc/testsuite/obj-c++.dg/property/fsf-property-method-access.mm @@ -1,5 +1,6 @@ /* test access in methods, auto-generated getter/setter based on property name. */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ #ifdef __cplusplus extern "C" { diff --git a/gcc/testsuite/obj-c++.dg/property/fsf-property-named-ivar.mm b/gcc/testsuite/obj-c++.dg/property/fsf-property-named-ivar.mm index 8538a1f..d29f431 100644 --- a/gcc/testsuite/obj-c++.dg/property/fsf-property-named-ivar.mm +++ b/gcc/testsuite/obj-c++.dg/property/fsf-property-named-ivar.mm @@ -1,5 +1,6 @@ /* Basic test, auto-generated getter/setter based on named ivar */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ #ifdef __cplusplus extern "C" { diff --git a/gcc/testsuite/obj-c++.dg/property/property-1.mm b/gcc/testsuite/obj-c++.dg/property/property-1.mm index b89d34b..4447946 100644 --- a/gcc/testsuite/obj-c++.dg/property/property-1.mm +++ b/gcc/testsuite/obj-c++.dg/property/property-1.mm @@ -1,5 +1,6 @@ /* This program tests use of property provided setter/getter functions. */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ /* { dg-additional-sources "../../objc-obj-c++-shared/Object1.mm" } */ #import "../../objc-obj-c++-shared/Object1.h" diff --git a/gcc/testsuite/obj-c++.dg/property/property-2.mm b/gcc/testsuite/obj-c++.dg/property/property-2.mm deleted file mode 100644 index 5d55b40..0000000 --- a/gcc/testsuite/obj-c++.dg/property/property-2.mm +++ /dev/null @@ -1,62 +0,0 @@ -/* { dg-do run { target *-*-darwin* } } */ -/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ -/* We can't do this yet on m64, since we have not got the NSConstantString implementation - built-in to the compiler, and therefore we get missing implementation warnings. */ -/* { dg-require-effective-target ilp32 } */ -/* Force ABI = 0 in the NeXT headers, also suppress deprecation warnings. */ -/* { dg-options "-framework Foundation -fobjc-exceptions -mmacosx-version-min=10.4 -Wno-deprecated-declarations" } */ - -#include <objc/objc-api.h> -#include <Foundation/Foundation.h> - -@interface Person : NSObject -@property NSString *firstName, *lastName; -@property(readonly) NSString *fullName; -@end - -@interface Group : NSObject -@property Person *techLead, *runtimeGuru, *propertiesMaven; -@end - -@implementation Group -@property Person *techLead, *runtimeGuru, *propertiesMaven; -- init { - techLead = [[Person alloc] init]; - runtimeGuru = [[Person alloc] init]; - propertiesMaven = [[Person alloc] init]; - return self; -} -@end - -@implementation Person -@property NSString *firstName, *lastName; -@property(readonly) NSString *fullName; -- (NSString*)fullName { // computed getter - return [NSString stringWithFormat:@"%@ %@", firstName, lastName]; -} -@end - -NSString *playWithProperties() -{ - Group *g = [[Group alloc] init] ; - - g.techLead.firstName = @"Blaine"; - g.techLead.lastName = @"Garst"; - g.runtimeGuru.firstName = @"Greg"; - g.runtimeGuru.lastName = @"Parker"; - g.propertiesMaven.firstName = @"Patrick"; - g.propertiesMaven.lastName = @"Beard"; - - return [NSString stringWithFormat:@"techlead %@ runtimeGuru %@ propertiesMaven %@", - g.techLead.fullName, g.runtimeGuru.fullName, g.propertiesMaven.fullName]; -} - -main() -{ - char buf [256]; - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - sprintf(buf, "%s", [playWithProperties() cString]); - [pool release]; - return strcmp (buf, "techlead Blaine Garst runtimeGuru Greg Parker propertiesMaven Patrick Beard"); -} - diff --git a/gcc/testsuite/obj-c++.dg/property/property-3.mm b/gcc/testsuite/obj-c++.dg/property/property-3.mm deleted file mode 100644 index 5a83263..0000000 --- a/gcc/testsuite/obj-c++.dg/property/property-3.mm +++ /dev/null @@ -1,75 +0,0 @@ -/* This program tests use of properties . */ -/* { dg-do run { target *-*-darwin* } } */ -/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ -/* We can't do this yet on m64, since we have not got the NSConstantString implementation - built-in to the compiler, and therefore we get missing implementation warnings. */ -/* { dg-require-effective-target ilp32 } */ -/* Force ABI = 0 in the NeXT headers, also suppress deprecation warnings. */ -/* { dg-options "-framework Foundation -fobjc-exceptions -mmacosx-version-min=10.4 -Wno-deprecated-declarations" } */ - -#include <objc/objc-api.h> -#include <Foundation/Foundation.h> - -@interface Person : NSObject -{ -} -@property NSString *firstName, *lastName; -@property(readonly) NSString *fullName; - -@end - -@interface Group : NSObject -{ -} - -@property Person *techLead, *runtimeGuru, *propertiesMaven; - -@end - -@implementation Group - -@property Person *techLead, *runtimeGuru, *propertiesMaven; -- init { - techLead = [[Person alloc] init]; - runtimeGuru = [[Person alloc] init]; - propertiesMaven = [[Person alloc] init]; - return self; -} - -@end - -@implementation Person - -@property NSString *firstName, *lastName; -@property(readonly, getter = fullName) NSString *fullName; - -- (NSString*)fullName { // computed getter - return [NSString stringWithFormat:@"%@ %@", firstName, lastName]; -} - -@end - -NSString *playWithProperties() -{ - Group *g = [[Group alloc] init] ; - - g.techLead.firstName = @"Blaine"; - g.techLead.lastName = @"Garst"; - g.runtimeGuru.firstName = @"Greg"; - g.runtimeGuru.lastName = @"Parker"; - g.propertiesMaven.firstName = @"Patrick"; - g.propertiesMaven.lastName = @"Beard"; - - return [NSString stringWithFormat:@"techlead %@ runtimeGuru %@ propertiesMaven %@", - g.techLead.fullName, g.runtimeGuru.fullName, g.propertiesMaven.fullName]; -} - -main() -{ - char buf [256]; - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - sprintf(buf, "%s", [playWithProperties() cString]); - [pool release]; - return strcmp (buf, "techlead Blaine Garst runtimeGuru Greg Parker propertiesMaven Patrick Beard"); -} - diff --git a/gcc/testsuite/obj-c++.dg/property/synthesize-2.mm b/gcc/testsuite/obj-c++.dg/property/synthesize-2.mm index dfa3fd5..b14fe26 100644 --- a/gcc/testsuite/obj-c++.dg/property/synthesize-2.mm +++ b/gcc/testsuite/obj-c++.dg/property/synthesize-2.mm @@ -1,5 +1,6 @@ /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010. */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ #include <objc/objc.h> #include <objc/runtime.h> diff --git a/gcc/testsuite/obj-c++.dg/template-8.mm b/gcc/testsuite/obj-c++.dg/template-8.mm index eb01aa8..97bdb7f 100644 --- a/gcc/testsuite/obj-c++.dg/template-8.mm +++ b/gcc/testsuite/obj-c++.dg/template-8.mm @@ -3,18 +3,21 @@ /* Author: Fariborz Jahanian <fjahanian@apple.com> */ /* Adapted by Nicola Pero <nicola.pero@meta-innovation.com> */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ #include <objc/objc.h> #include <objc/runtime.h> @interface MyRootClass { Class isa; } ++ (id) initialize; + alloc; - init; - doSomething; @end @implementation MyRootClass ++ (id) initialize { return self; } + alloc { return class_createInstance (self, 0); } - init { return self; } - doSomething { return self; } diff --git a/gcc/testsuite/objc.dg/demangle-1.m b/gcc/testsuite/objc.dg/demangle-1.m index f790c56..42b79a9 100644 --- a/gcc/testsuite/objc.dg/demangle-1.m +++ b/gcc/testsuite/objc.dg/demangle-1.m @@ -12,15 +12,14 @@ { Class isa; } ++ (id) initialize; + (int) testFunction1; + (int) test_function2; + (int) __testFunction3: (int)unused andArgument: (char)unused2; -#ifdef __NEXT_RUNTIME__ -+ (id) initialize ; -#endif @end @implementation DemangleTest ++ (id) initialize { return self; } + (int) testFunction1 { printf ("%s\n", __PRETTY_FUNCTION__); @@ -41,9 +40,6 @@ printf ("%s\n", __PRETTY_FUNCTION__); return strcmp (__PRETTY_FUNCTION__, "+[DemangleTest __testFunction3:andArgument:]"); } -#ifdef __NEXT_RUNTIME__ -+ (id) initialize { return self; } -#endif @end int main () diff --git a/gcc/testsuite/objc.dg/property/dotsyntax-3.m b/gcc/testsuite/objc.dg/property/dotsyntax-3.m index 5991962..d347806 100644 --- a/gcc/testsuite/objc.dg/property/dotsyntax-3.m +++ b/gcc/testsuite/objc.dg/property/dotsyntax-3.m @@ -1,5 +1,6 @@ /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ /* { dg-do run } */ +/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ /* Test the 'dot syntax' without a declarated property. This tests the case where the object is a Class. */ diff --git a/gcc/testsuite/objc.dg/torture/forward-1.m b/gcc/testsuite/objc.dg/torture/forward-1.m new file mode 100644 index 0000000..086d69e --- /dev/null +++ b/gcc/testsuite/objc.dg/torture/forward-1.m @@ -0,0 +1,83 @@ +/* { dg-do run } */ +/* See if -forward::/-performv:: is able to work. */ +/* { dg-skip-if "PR36610" { *-*-* } { "-fgnu-runtime" } { "" } } */ +/* { dg-skip-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ + +#include <stdio.h> +#include <stdlib.h> + +#import "../../objc-obj-c++-shared/Object1.h" +#import "../../objc-obj-c++-shared/next-mapping.h" +#include <objc/objc-api.h> + +#define VALUETOUSE 1234567890 + +id forwarder, receiver; + +@interface Forwarder: Object +{ + id receiver; +} + +-initWithReceiver:theReceiver; + +@end + +@interface Receiver:Object +{ + int foo; +} +-display; +-initWithFoo:(int)theFoo; +@end +@implementation Receiver + +-initWithFoo: (int)theFoo +{ + foo = theFoo; + return self; +} + +-display +{ + /* Check to see if we are really the reciever. */ + if (self != receiver) + abort (); + /* And the value of foo is set correctly. */ + if (foo != VALUETOUSE) + abort (); + return self; +} + +@end + +@implementation Forwarder +-initWithReceiver: theReceiver +{ + [super init]; + receiver = theReceiver; + return self; +} +#ifdef __NEXT_RUNTIME__ +- forward: (SEL)theSel: (marg_list)theArgFrame +#else +-(retval_t) forward: (SEL)theSel: (arglist_t)theArgFrame +#endif +{ + /* If we have a reciever try to perform on that object */ + if (receiver) + return [receiver performv: theSel: theArgFrame]; + return [self doesNotRecognize:theSel]; +} +@end +int main() +{ + /* Init the reciever. */ + receiver = [[Receiver alloc] initWithFoo: VALUETOUSE]; + /* Init the fowarder. */ + forwarder = [[Forwarder alloc] initWithReceiver: receiver]; + /* Call display on the forwarder which in turns calls display on + the reciever. */ + [forwarder display]; + exit(0); +} |