diff options
-rw-r--r-- | gcc/objc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/objc/objc-act.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/obj-c++.dg/gnu-runtime-1.mm | 19 | ||||
-rw-r--r-- | gcc/testsuite/obj-c++.dg/gnu-runtime-2.mm | 30 | ||||
-rw-r--r-- | gcc/testsuite/objc.dg/gnu-runtime-2.m | 30 |
6 files changed, 92 insertions, 1 deletions
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog index c9edce2..6d7b9a4 100644 --- a/gcc/objc/ChangeLog +++ b/gcc/objc/ChangeLog @@ -1,3 +1,9 @@ +2005-07-07 Ziemowit Laski <zlaski@apple.com> + + PR objc/22274 + * objc-act.c (objc_build_string_object): For GNU-style constants, + use the @interface type rather than the built-in type. + 2005-07-03 Kazu Hirata <kazu@codesourcery.com> * Make-lang.in (cc1plus-checksum.c): Use diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index a3d32d8..48cf707 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -1915,7 +1915,7 @@ objc_build_string_object (tree string) if (!flag_next_runtime) constructor - = objc_add_static_instance (constructor, internal_const_str_type); + = objc_add_static_instance (constructor, constant_string_type); else { var = build_decl (CONST_DECL, NULL, TREE_TYPE (constructor)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7c793be..d8efcde 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2005-07-07 Ziemowit Laski <zlaski@apple.com> + + PR objc/22274 + * obj-c++.dg/gnu-runtime-[1-2].mm: New. + * objc.dg/gnu-runtime-2.m: New. + 2005-07-06 Jeff Law <law@redhat.com> * gcc.dg/tree-ssa/vrp17.c: New test. diff --git a/gcc/testsuite/obj-c++.dg/gnu-runtime-1.mm b/gcc/testsuite/obj-c++.dg/gnu-runtime-1.mm new file mode 100644 index 0000000..dab9215 --- /dev/null +++ b/gcc/testsuite/obj-c++.dg/gnu-runtime-1.mm @@ -0,0 +1,19 @@ +/* Test that compiling for the GNU runtime works (regardless of + the system runtime used). */ +/* Author: Ziemowit Laski <zlaski@apple.com> */ +/* { dg-do compile } */ +/* { dg-options "-fgnu-runtime" } */ + +#include <objc/Object.h> + +@interface FooBar: Object +- (void)boo; +@end + +int main () +{ + id fooBarInst = [[FooBar alloc] init]; + [fooBarInst boo]; + return 0; +} + diff --git a/gcc/testsuite/obj-c++.dg/gnu-runtime-2.mm b/gcc/testsuite/obj-c++.dg/gnu-runtime-2.mm new file mode 100644 index 0000000..09204e3 --- /dev/null +++ b/gcc/testsuite/obj-c++.dg/gnu-runtime-2.mm @@ -0,0 +1,30 @@ +/* Sanity check for GNU-runtime version of constant strings, + regardless of runtime used on target system. */ + +/* { dg-do run } */ +/* { dg-options "-fgnu-runtime" } */ + +#include <objc/Object.h> +#include <string.h> +#include <stdlib.h> + +@interface NXConstantString: Object +{ + char *c_string; + unsigned int len; +} +-(const char *) cString; +-(unsigned int) length; +@end + +@implementation NXConstantString +-(const char *) cString { return c_string; } +-(unsigned int) length { return len; } +@end + +int main(int argc, void **args) +{ + if (strcmp ([@"this is a string" cString], "this is a string")) + abort (); + return 0; +} diff --git a/gcc/testsuite/objc.dg/gnu-runtime-2.m b/gcc/testsuite/objc.dg/gnu-runtime-2.m new file mode 100644 index 0000000..09204e3 --- /dev/null +++ b/gcc/testsuite/objc.dg/gnu-runtime-2.m @@ -0,0 +1,30 @@ +/* Sanity check for GNU-runtime version of constant strings, + regardless of runtime used on target system. */ + +/* { dg-do run } */ +/* { dg-options "-fgnu-runtime" } */ + +#include <objc/Object.h> +#include <string.h> +#include <stdlib.h> + +@interface NXConstantString: Object +{ + char *c_string; + unsigned int len; +} +-(const char *) cString; +-(unsigned int) length; +@end + +@implementation NXConstantString +-(const char *) cString { return c_string; } +-(unsigned int) length { return len; } +@end + +int main(int argc, void **args) +{ + if (strcmp ([@"this is a string" cString], "this is a string")) + abort (); + return 0; +} |