OSDN Git Service

2010-03-31 Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
authorjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 31 Mar 2010 15:47:42 +0000 (15:47 +0000)
committerMasaki Muranaka <monaka@monami-software.com>
Sun, 23 May 2010 00:40:40 +0000 (09:40 +0900)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157872 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/obj-c++.dg/isa-field-1.mm
gcc/testsuite/objc-obj-c++-shared/next-mapping.h

index 1267060..ed8cdfc 100644 (file)
@@ -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
index 274aa8c..4b93df8 100644 (file)
@@ -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;
 @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"
index c59993a..b52b6a7 100644 (file)
@@ -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))