next-mapping.h: Ensure a GNU-compatible nil is defined.

* objc-obj-c++-shared/next-mapping.h: Ensure a GNU-compatible nil is
	defined.
	* objc.dg/property/fsf-property-basic.m: XFAIL m64 NeXT run.
	* objc.dg/property/fsf-property-named-ivar.m: Likewise.
	* objc.dg/property/property-1.m: Likewise.
	* objc.dg/property/at-property-6.m: Likewise.
	* objc.dg/property/at-property-7.m: Likewise.
	* objc.dg/property/dotsyntax-1.m: Likewise.
	* objc.dg/property/at-property-8.m: Likewise.
	* objc.dg/property/dotsyntax-2.m: Likewise.
	* objc.dg/property/at-property-9.m: Likewise.
	* objc.dg/property/synthesize-2.m: Likewise.
	* objc.dg/property/at-property-10.m: Likewise.
	* objc.dg/property/at-property-11.m: Likewise.
	* objc.dg/property/at-property-12.m: Likewise.
	* objc.dg/property/at-property-13.m: Likewise.
	* objc.dg/property/fsf-property-method-access.m: Likewise.
	* objc.dg/torture/strings/const-cfstring-1.m: Cater for bogus Darwin10
	linker warning.
	* 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.
	* 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.x: Remove.

From-SVN: r166321
This commit is contained in:
Iain Sandoe 2010-11-04 18:19:54 +00:00
parent 2e239f9d20
commit 5b4db3f50e
25 changed files with 65 additions and 257 deletions

View File

@ -1,3 +1,33 @@
2010-11-04 Iain Sandoe <iains@gcc.gnu.org>
* objc-obj-c++-shared/next-mapping.h: Ensure a GNU-compatible nil is
defined.
* objc.dg/property/fsf-property-basic.m: XFAIL m64 NeXT run.
* objc.dg/property/fsf-property-named-ivar.m: Likewise.
* objc.dg/property/property-1.m: Likewise.
* objc.dg/property/at-property-6.m: Likewise.
* objc.dg/property/at-property-7.m: Likewise.
* objc.dg/property/dotsyntax-1.m: Likewise.
* objc.dg/property/at-property-8.m: Likewise.
* objc.dg/property/dotsyntax-2.m: Likewise.
* objc.dg/property/at-property-9.m: Likewise.
* objc.dg/property/synthesize-2.m: Likewise.
* objc.dg/property/at-property-10.m: Likewise.
* objc.dg/property/at-property-11.m: Likewise.
* objc.dg/property/at-property-12.m: Likewise.
* objc.dg/property/at-property-13.m: Likewise.
* objc.dg/property/fsf-property-method-access.m: Likewise.
* objc.dg/torture/strings/const-cfstring-1.m: Cater for bogus Darwin10
linker warning.
* 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.
* 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.x: Remove.
2010-11-04 Jason Merrill <jason@redhat.com>
* g++.dg/cpp0x/constexpr-access.C: New.

View File

@ -19,6 +19,10 @@
#include <stdlib.h>
#include <string.h>
/* Force a definition of nil that is compatible with GNU runtime. */
#undef nil
#define nil ((id)0)
#define objc_get_class(C) objc_getClass(C)
#define objc_get_meta_class(C) objc_getMetaClass(C)
#define class_get_class_method(C, S) class_getClassMethod(C, S)

View File

@ -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 <string.h>
#include <stdlib.h>
@ -14,6 +15,9 @@
+ (int) testFunction1;
+ (int) test_function2;
+ (int) __testFunction3: (int)unused andArgument: (char)unused2;
#ifdef __NEXT_RUNTIME__
+ (id) initialize ;
#endif
@end
@implementation DemangleTest
@ -37,6 +41,9 @@
printf ("%s\n", __PRETTY_FUNCTION__);
return strcmp (__PRETTY_FUNCTION__, "+[DemangleTest __testFunction3:andArgument:]");
}
#ifdef __NEXT_RUNTIME__
+ (id) initialize { return self; }
#endif
@end
int main ()

View File

@ -2,10 +2,13 @@
/* { dg-do run { target *-*-darwin* } } */
/* { dg-require-effective-target lp64 } */
/* { dg-options "-Wno-deprecated-declarations" } */
/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
/* { dg-additional-sources "../objc-obj-c++-shared/Object1.m" } */
#include <objc/Object.h>
#include "../objc-obj-c++-shared/Object1.h"
#include "../objc-obj-c++-shared/next-mapping.h"
#include <stdbool.h>
#include <string.h>
#include <stdlib.h>

View File

@ -3,9 +3,11 @@
/* { dg-do run { target *-*-darwin* } } */
/* { dg-require-effective-target ilp32 } */
/* { dg-options "-Wno-deprecated-declarations" } */
/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
#include "../objc-obj-c++-shared/Object1.h"
#include "../objc-obj-c++-shared/next-mapping.h"
#include <stdbool.h>
#include <string.h>
#include <stdlib.h>

View File

@ -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. */

View File

@ -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. */

View File

@ -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. */

View File

@ -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. */

View File

@ -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. */

View File

@ -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. */

View File

@ -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. */

View File

@ -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. */

View File

@ -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. */

View File

@ -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. */

View File

@ -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" } { "" } } */
extern int printf (char *fmt,...) ;
extern void abort (void);

View File

@ -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" } { "" } } */
extern int printf (char *fmt,...) ;
extern void abort (void);

View File

@ -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" } { "" } } */
extern int printf (char *fmt,...) ;
extern void abort (void);

View File

@ -2,6 +2,7 @@
/* { dg-options "-std=c99" } */
/* { dg-do run } */
/* { dg-additional-sources "../../objc-obj-c++-shared/Object1.m" } */
/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
#import "../../objc-obj-c++-shared/Object1.h"

View File

@ -1,65 +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" } */
/* FIXME: There is no reason to use NSString in this file. */
#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");
}

View File

@ -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");
}

View File

@ -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>

View File

@ -9,6 +9,9 @@
/* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */
/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
/* { dg-options "-mconstant-cfstrings -framework Cocoa" } */
/* Darwin10's linker emits a warning that the constant strings are incompatible with writable ones.
Well, we don't implement writable ones at this juncture. */
/* { dg-options "-mconstant-cfstrings -framework Cocoa -Wl,-w" { target *-*-darwin[123]* } } */
#import <Foundation/NSString.h>
#import <CoreFoundation/CFString.h>

View File

@ -1,80 +0,0 @@
/* See if -forward::/-performv:: is able to work. */
#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);
}

View File

@ -1,36 +0,0 @@
load_lib target-supports.exp
# XFAIL: PR libobjc/36610, for targets which pass arguments via registers
if { ([istarget x86_64-*-linux*] && [check_effective_target_lp64] )
|| [istarget powerpc*-*-linux*]
|| [istarget powerpc*-*-aix*]
|| [istarget s390*-*-*-linux*]
|| [istarget sh4-*-linux*]
|| [istarget hppa*-*-linux*]
|| [istarget hppa*-*-hpux*]
|| [istarget ia64-*-linux*] } {
set torture_execute_xfail "*-*-*"
}
# For darwin and alpha-linux it fails with -fgnu-runtime,
# passes with -fnext-runtime.
if { [istarget alpha*-*-linux*]
|| [istarget alpha*-dec-osf*]
|| ([istarget i?86-*-solaris2*] && [check_effective_target_lp64] )
|| [istarget mips-sgi-irix*]
|| [istarget sparc*-sun-solaris2*]
|| ([istarget *-*-darwin*] && [check_effective_target_lp64] ) } {
set torture_eval_before_execute {
global compiler_conditional_xfail_data
set compiler_conditional_xfail_data {
"Target fails with -fgnu-runtime" \
"*-*-*" \
{ "-fgnu-runtime" } \
{ "" }
}
}
}
return 0