From: Ziemowit Laski Date: Thu, 7 Jul 2005 06:25:49 +0000 (+0000) Subject: re PR objc/22274 (string[1-4].m, const-str-5.m fails with the gnu runtime) X-Git-Tag: misc/cutover-cvs2svn~1892 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f5d21c4ca15a9423443ce33efb3c9b8ebcde051e;p=thirdparty%2Fgcc.git re PR objc/22274 (string[1-4].m, const-str-5.m fails with the gnu runtime) /objc/ChangeLog] 2005-07-07 Ziemowit Laski PR objc/22274 * objc-act.c (objc_build_string_object): For GNU-style constants, use the @interface type rather than the built-in type. [gcc/testsuite/ChangeLog] 2005-07-07 Ziemowit Laski PR objc/22274 * obj-c++.dg/gnu-runtime-[1-2].mm: New. * objc.dg/gnu-runtime-2.m: New. From-SVN: r101686 --- diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog index c9edce226088..6d7b9a4d9f15 100644 --- a/gcc/objc/ChangeLog +++ b/gcc/objc/ChangeLog @@ -1,3 +1,9 @@ +2005-07-07 Ziemowit Laski + + 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 * Make-lang.in (cc1plus-checksum.c): Use diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index a3d32d8ffa6f..48cf70758632 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 7c793be17c01..d8efcde2a639 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2005-07-07 Ziemowit Laski + + PR objc/22274 + * obj-c++.dg/gnu-runtime-[1-2].mm: New. + * objc.dg/gnu-runtime-2.m: New. + 2005-07-06 Jeff Law * 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 000000000000..dab921554f19 --- /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 */ +/* { dg-do compile } */ +/* { dg-options "-fgnu-runtime" } */ + +#include + +@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 000000000000..09204e3c918e --- /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 +#include +#include + +@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 000000000000..09204e3c918e --- /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 +#include +#include + +@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; +}