===================================================================
@@ -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>
===================================================================
@@ -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. */
===================================================================
@@ -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);
+}
===================================================================
@@ -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 ()
===================================================================
@@ -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. */
===================================================================
@@ -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" {
===================================================================
@@ -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"
===================================================================
@@ -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");
-}
-
===================================================================
@@ -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. */
===================================================================
@@ -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. */
===================================================================
@@ -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. */
===================================================================
@@ -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>
===================================================================
@@ -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. */
===================================================================
@@ -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. */
===================================================================
@@ -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" {
===================================================================
@@ -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" {
===================================================================
@@ -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");
-}
-
===================================================================
@@ -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
===================================================================
@@ -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. */
===================================================================
@@ -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. */
===================================================================
@@ -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. */
===================================================================
@@ -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. */
===================================================================
@@ -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. */
===================================================================
@@ -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 ()
===================================================================
@@ -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; }
===================================================================
@@ -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;
}