From: James E Wilson Date: Wed, 28 Jan 2004 08:17:55 +0000 (+0000) Subject: encode-2.m (main): New local string. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=220a38ab6e9973dac69fa339127b88b57e44dc9b;p=gcc.git encode-2.m (main): New local string. * 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 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 81e8392db1e..e22e0e36884 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2004-01-27 James E Wilson + + * 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 * objc.dg/call-super-2.m: Make LP64-safe. diff --git a/gcc/testsuite/objc.dg/encode-2.m b/gcc/testsuite/objc.dg/encode-2.m index ebfd8d3fa2d..b0899270f7f 100644 --- a/gcc/testsuite/objc.dg/encode-2.m +++ b/gcc/testsuite/objc.dg/encode-2.m @@ -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]; diff --git a/gcc/testsuite/objc.dg/encode-3.m b/gcc/testsuite/objc.dg/encode-3.m index b30b956b157..d32ab729ba1 100644 --- a/gcc/testsuite/objc.dg/encode-3.m +++ b/gcc/testsuite/objc.dg/encode-3.m @@ -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));