From f5d21c4ca15a9423443ce33efb3c9b8ebcde051e Mon Sep 17 00:00:00 2001 From: Ziemowit Laski Date: Thu, 7 Jul 2005 06:25:49 +0000 Subject: [PATCH] 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 --- gcc/objc/ChangeLog | 6 +++++ gcc/objc/objc-act.c | 2 +- gcc/testsuite/ChangeLog | 6 +++++ gcc/testsuite/obj-c++.dg/gnu-runtime-1.mm | 19 ++++++++++++++ gcc/testsuite/obj-c++.dg/gnu-runtime-2.mm | 30 +++++++++++++++++++++++ gcc/testsuite/objc.dg/gnu-runtime-2.m | 30 +++++++++++++++++++++++ 6 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/obj-c++.dg/gnu-runtime-1.mm create mode 100644 gcc/testsuite/obj-c++.dg/gnu-runtime-2.mm create mode 100644 gcc/testsuite/objc.dg/gnu-runtime-2.m diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog index c9edce22608..6d7b9a4d9f1 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 a3d32d8ffa6..48cf7075863 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 7c793be17c0..d8efcde2a63 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 00000000000..dab921554f1 --- /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 00000000000..09204e3c918 --- /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 00000000000..09204e3c918 --- /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; +} -- 2.30.2