encode-2.m (main): New local string.
authorJames E Wilson <wilson@specifixinc.com>
Wed, 28 Jan 2004 08:17:55 +0000 (08:17 +0000)
committerJim Wilson <wilson@gcc.gnu.org>
Wed, 28 Jan 2004 08:17:55 +0000 (00:17 -0800)
* objc.dg/encode-2.m (main): New local string.  Set depending on
sizeof long.  Use in sscanf call.
* objc.dg/encode-3.m (main): New local string.  Set depending on
sizeof long.  Use in scan_initial call.

From-SVN: r76783

gcc/testsuite/ChangeLog
gcc/testsuite/objc.dg/encode-2.m
gcc/testsuite/objc.dg/encode-3.m

index 81e8392db1e263159cb4b702322d6123c0789a4d..e22e0e368840684f52393e2f1f81d12751379e94 100644 (file)
@@ -1,3 +1,10 @@
+2004-01-27  James E Wilson  <wilson@specifixinc.com>
+
+       * objc.dg/encode-2.m (main): New local string.  Set depending on
+       sizeof long.  Use in sscanf call.
+       * objc.dg/encode-3.m (main): New local string.  Set depending on
+       sizeof long.  Use in scan_initial call.
+
 2004-01-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * objc.dg/call-super-2.m: Make LP64-safe.
index ebfd8d3fa2d108572644635523269233043cfeab..b0899270f7f3a3ac784e262d6d84adc74302864f 100644 (file)
@@ -6,7 +6,7 @@
     - The k-th parameter (k > 1) has offset equal to the
       sum of:
         - the offset of the k-1-st paramter
-        - the int-promoted size of the k-1-st parameter.
+        - the (void *)-promoted size of the k-1-st parameter.
 
    Note that the encoded offsets need not correspond
    to the actual placement of parameters (relative to 'self')
@@ -78,6 +78,7 @@ int main(void) {
   Foo *foo = [[Foo alloc] init];
   Class fooClass = OBJC_GETCLASS("Foo");
   METHOD meth;
+  const char *string;
 
   meth = CLASS_GETINSTANCEMETHOD(fooClass, @selector(setRect:withInt:));
   offs2 = 9999;
@@ -88,8 +89,12 @@ int main(void) {
 
   meth = CLASS_GETINSTANCEMETHOD(fooClass, @selector(char:float:double:long:));
   offs2 = 9999;
-  sscanf(meth->method_types, "v%u@%u:%uc%uf%ud%ul%u", &offs1, &offs2, &offs3,  
-      &offs4, &offs5, &offs6, &offs7);
+  if (sizeof (long) == 8)
+    string = "v%u@%u:%uc%uf%ud%uq%u";
+  else
+    string = "v%u@%u:%uc%uf%ud%ul%u";
+  sscanf(meth->method_types, string, &offs1, &offs2, &offs3,  
+        &offs4, &offs5, &offs6, &offs7);
   CHECK_IF(!offs2);
   [foo char:'c' float:2.3 double:3.5 long:2345L];
 
index b30b956b157c398b1a021f5b5c8ff03233684857..d32ab729ba154032a9fe1b8b4cff23de5e94a90f 100644 (file)
@@ -46,8 +46,14 @@ static void scan_initial(const char *pattern) {
 }
 
 int main(void) {
+  const char *string;
+
   meth = [proto descriptionForInstanceMethod: @selector(char:float:double:unsigned:short:long:)];
-  scan_initial("v%u@%u:%uc%uf%ud%uI%us%ul%u");
+  if (sizeof (long) == 8)
+    string = "v%u@%u:%uc%uf%ud%uI%us%uq%u";
+  else
+    string = "v%u@%u:%uc%uf%ud%uI%us%ul%u";
+  scan_initial(string);
   CHECK_IF(offs3 == offs2 + sizeof(int) && offs4 == offs3 + sizeof(float));
   CHECK_IF(offs5 == offs4 + sizeof(double) && offs6 == offs5 + sizeof(unsigned));
   CHECK_IF(offs7 == offs6 + sizeof(int) && totsize == offs7 + sizeof(long));