aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>2010-03-31 15:47:42 +0000
committerJanis Johnson <janis@gcc.gnu.org>2010-03-31 15:47:42 +0000
commit2981f2063fdee297f8269c087e503f778b16a4bd (patch)
treeb273c788148c6c80d8973589a9462cfc449e1c2a /gcc
parent290d8971e6e3b784a88b5c4b6b91b8d77552cb3a (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/testsuite/obj-c++.dg/isa-field-1.mm16
-rw-r--r--gcc/testsuite/objc-obj-c++-shared/next-mapping.h8
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))