diff options
author | Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk> | 2010-03-31 15:47:42 +0000 |
---|---|---|
committer | Janis Johnson <janis@gcc.gnu.org> | 2010-03-31 15:47:42 +0000 |
commit | 2981f2063fdee297f8269c087e503f778b16a4bd (patch) | |
tree | b273c788148c6c80d8973589a9462cfc449e1c2a /gcc | |
parent | 290d8971e6e3b784a88b5c4b6b91b8d77552cb3a (diff) | |
download | gcc-2981f2063fdee297f8269c087e503f778b16a4bd.zip gcc-2981f2063fdee297f8269c087e503f778b16a4bd.tar.gz gcc-2981f2063fdee297f8269c087e503f778b16a4bd.tar.bz2 |
re PR objc++/23613 (obj-c++.dg/isa-field-1.mm fails with the GNU runtime)
2010-03-31 Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
PR objc++/23613
* gcc/testsuite/objc-obj-c++-shared/next-mapping.h (CLASSPTRFIELD):
New macro.
* gcc/testsuite/obj-c++.dg/isa-field-1.mm: Use new CLASSPTRFIELD macro.
Remove dg-xfail-if.
From-SVN: r157872
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/testsuite/obj-c++.dg/isa-field-1.mm | 16 | ||||
-rw-r--r-- | gcc/testsuite/objc-obj-c++-shared/next-mapping.h | 8 |
3 files changed, 24 insertions, 8 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1267060..ed8cdfc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2010-03-31 Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk> + + PR objc++/23613 + * gcc/testsuite/objc-obj-c++-shared/next-mapping.h (CLASSPTRFIELD): + New macro. + * gcc/testsuite/obj-c++.dg/isa-field-1.mm: Use new CLASSPTRFIELD macro. + Remove dg-xfail-if. + 2010-03-31 Martin Jambor <mjambor@suse.cz> * gcc.dg/guality/inline-params.c: Disable early inlining. Xfail run diff --git a/gcc/testsuite/obj-c++.dg/isa-field-1.mm b/gcc/testsuite/obj-c++.dg/isa-field-1.mm index 274aa8c..4b93df8 100644 --- a/gcc/testsuite/obj-c++.dg/isa-field-1.mm +++ b/gcc/testsuite/obj-c++.dg/isa-field-1.mm @@ -1,8 +1,10 @@ -/* Ensure there are no bizarre difficulties with accessing the 'isa' field of objects. */ +/* Ensure there are no bizarre difficulties with accessing the 'isa' field of + objects. This field is named differently between GNU and NeXT runtimes so + accessed via the CLASSPTRFIELD() macro defined in next-mapping.h */ /* { dg-do compile } */ -/* { dg-xfail-if "PR23613" { "*-*-*" } { "*" } { "" } } */ #include "../objc-obj-c++-shared/Object1.h" +#include "../objc-obj-c++-shared/next-mapping.h" @interface Object (Test) - (Class) test1: (id)object; @@ -15,11 +17,11 @@ @implementation Object (Test) Class test1(id object) { - Class cls = object->isa; + Class cls = CLASSPTRFIELD(object); return cls; } - (Class) test1: (id)object { - Class cls = object->isa; + Class cls = CLASSPTRFIELD(object); return cls; } @@ -28,18 +30,18 @@ Class test1(id object) { @implementation Derived Class test2(id object) { - Class cls = object->isa; + Class cls = CLASSPTRFIELD(object); return cls; } - (Class) test2: (id)object { - Class cls = object->isa; + Class cls = CLASSPTRFIELD(object); return cls; } @end Class test3(id object) { - Class cls = object->isa; + Class cls = CLASSPTRFIELD(object); return cls; } #include "../objc-obj-c++-shared/Object1-implementation.h" diff --git a/gcc/testsuite/objc-obj-c++-shared/next-mapping.h b/gcc/testsuite/objc-obj-c++-shared/next-mapping.h index c59993a9..b52b6a7 100644 --- a/gcc/testsuite/objc-obj-c++-shared/next-mapping.h +++ b/gcc/testsuite/objc-obj-c++-shared/next-mapping.h @@ -5,7 +5,11 @@ /* David Ayers <d.ayers@inode.at> */ /* Darwin 64bit/OBJC2 modifications Iain Sandoe */ -#ifdef __NEXT_RUNTIME__ +#ifndef __NEXT_RUNTIME__ + +#define CLASSPTRFIELD(x) (x)->class_pointer + +#else /* Includes next-abi.h to set NEXT_OBJC_USE_NEW_INTERFACE etc.*/ #ifndef _OBJC_OBJECT1_H_ #include "Object1.h" @@ -23,6 +27,8 @@ #define class_create_instance(C) class_createInstance(C, 0) #define class_get_class_name(C) object_getClassName(C) +#define CLASSPTRFIELD(x) (x)->isa + #ifdef NEXT_OBJC_USE_NEW_INTERFACE # define object_class_name(O) (object_getClassName(O)) # define object_get_class(O) (object_getClass((id)O)) |