objc-act.c (objc_add_static_instance): Set DECL_INITIAL and DECL_DEFER_OUTPUT on...
authorZack Weinberg <zack@gcc.gnu.org>
Tue, 6 Mar 2001 10:04:54 +0000 (10:04 +0000)
committerZack Weinberg <zack@gcc.gnu.org>
Tue, 6 Mar 2001 10:04:54 +0000 (10:04 +0000)
* objc/objc-act.c (objc_add_static_instance): Set DECL_INITIAL
and DECL_DEFER_OUTPUT on the decl we create, before calling
rest_of_decl_compilation.
testsuite:
        * objc/execute/string1.m, objc/execute/string2.m: Compare the
        result of -cString against what we expect it to be; don't just
        print it out for no one to read.

* objc/execute/string3.m, objc/execute/string4.m: New tests.
Based on testcases provided by Nicola Pero.

From-SVN: r40261

gcc/ChangeLog
gcc/objc/objc-act.c
gcc/testsuite/ChangeLog
gcc/testsuite/objc/execute/string1.m
gcc/testsuite/objc/execute/string2.m
gcc/testsuite/objc/execute/string3.m [new file with mode: 0644]
gcc/testsuite/objc/execute/string4.m [new file with mode: 0644]

index 8b9f61abeb704ace5541d6e0d5e3bf95278b31c8..1b1b3d092cc37636038b21e40804489680e0e665 100644 (file)
@@ -1,3 +1,9 @@
+2001-03-06  Zack Weinberg  <zackw@stanford.edu>
+
+       * objc/objc-act.c (objc_add_static_instance): Set DECL_INITIAL
+       and DECL_DEFER_OUTPUT on the decl we create, before calling
+       rest_of_decl_compilation.
+
 2001-03-06  Zack Weinberg  <zackw@stanford.edu>
 
        * aclocal.m4 (AM_GNU_GETTEXT): Don't AC_REQUIRE
 
        from 2000-09-06  Zack Weinberg  <zack@wolery.cumb.org>
        * c-parse.gperf, c-gperf.h: Delete.
-       (c-gperf.h was accidently re-added to the CVS repo in the rev 1.16 commit
-       by tromey)
+       (c-gperf.h was accidently re-added to the CVS repo in the rev
+       1.16 commit by tromey)
 
 2001-03-03  Neil Booth  <neil@daikokuya.demon.co.uk>
 
index f5f27ad803866e5fe7198e130834f107ee2d9359..99cb2971543794da7bf737274e44125acba3106d 100644 (file)
@@ -1474,13 +1474,14 @@ objc_add_static_instance (constructor, class_decl)
   DECL_COMMON (decl) = 1;
   TREE_STATIC (decl) = 1;
   DECL_ARTIFICIAL (decl) = 1;
+  DECL_INITIAL (decl) = constructor;
+
+  /* We may be writing something else just now.
+     Postpone till end of input.  */
+  DECL_DEFER_OUTPUT (decl) = 1;
   pushdecl_top_level (decl);
   rest_of_decl_compilation (decl, 0, 1, 0);
 
-  /* Do this here so it gets output later instead of possibly
-     inside something else we are writing.  */
-  DECL_INITIAL (decl) = constructor;
-
   /* Add the DECL to the head of this CLASS' list.  */
   TREE_PURPOSE (*chain) = tree_cons (NULL_TREE, decl, TREE_PURPOSE (*chain));
 
index 8e2e7b0399c3708a6e2430eeec346419372ae079..d0a7835b769aedda851b20f6c0d53c87c68ccdfc 100644 (file)
@@ -1,3 +1,12 @@
+2001-03-06  Zack Weinberg  <zackw@stanford.edu>
+
+        * objc/execute/string1.m, objc/execute/string2.m: Compare the
+        result of -cString against what we expect it to be; don't just
+        print it out for no one to read.
+
+       * objc/execute/string3.m, objc/execute/string4.m: New tests.
+       Based on testcases provided by Nicola Pero.
+
 2001-03-03  Neil Booth  <neil@daikokuya.demon.co.uk>
 
        * gcc.dg/cpp/macro7.c: New test.
index f0d14731836bcdf9e6c0472b0452e181c8537dd7..fff03c7cfa669e4454a45400e6d60d20068e5b17 100644 (file)
@@ -1,8 +1,12 @@
-#include <stdio.h>
+/* Based on a test case contributed by Nicola Pero.  */
+
+#include <string.h>
+#include <stdlib.h>
 #include <objc/NXConstStr.h>
 
 int main(int argc, void **args)
 {
-  printf ([@"this is a string\n" cString]);
+  if (strcmp ([@"this is a string" cString], "this is a string"))
+    abort ();
   return 0;
 }
index 247e22bc3d67b8b5c24f4a9f90d2186c965be28d..66462b3c96ce196a0f413c01bb5d28402de5d1e4 100644 (file)
@@ -1,8 +1,13 @@
-#include <stdio.h>
+/* Based on a test case contributed by Nicola Pero.  */
+
+#include <string.h>
+#include <stdlib.h>
 #include <objc/NXConstStr.h>
 
 int main(int argc, void **args)
 {
-  printf ([@"this " @"is " @"a " @"string\n" cString]);
+  if (strcmp ([@"this " @"is " @"a " @"string" cString],
+              "this " "is " "a " "string"))
+    abort ();
   return 0;
 }
diff --git a/gcc/testsuite/objc/execute/string3.m b/gcc/testsuite/objc/execute/string3.m
new file mode 100644 (file)
index 0000000..21527dc
--- /dev/null
@@ -0,0 +1,14 @@
+/* Based on a test case contributed by Nicola Pero.  */
+
+#include <string.h>
+#include <stdlib.h>
+#include <objc/NXConstStr.h>
+
+#define STRING "this is a string"
+
+int main (int argc, void **args)
+{
+  if (strcmp ([@STRING cString], STRING))
+    abort ();
+  return 0;
+}
diff --git a/gcc/testsuite/objc/execute/string4.m b/gcc/testsuite/objc/execute/string4.m
new file mode 100644 (file)
index 0000000..54550d6
--- /dev/null
@@ -0,0 +1,12 @@
+/* Based on a test case contributed by Nicola Pero.  */
+
+#include <string.h>
+#include <stdlib.h>
+#include <objc/NXConstStr.h>
+
+int main(int argc, void **args)
+{
+  if ([@"this is a string" length] != strlen ("this is a string"))
+    abort ();
+  return 0;
+}