c-pragma.c (mark_align_stack): New.
authorRichard Henderson <rth@cygnus.com>
Sat, 18 Sep 1999 18:54:36 +0000 (11:54 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Sat, 18 Sep 1999 18:54:36 +0000 (11:54 -0700)
        * c-pragma.c (mark_align_stack): New.
        (init_pragma): New.
        * c-pragma.h (init_pragma): Declare it.
        * c-lex.c (init_parse): Call it.

From-SVN: r29502

gcc/ChangeLog
gcc/c-lex.c
gcc/c-pragma.c
gcc/c-pragma.h

index c9f2d4ecbb327327ef4a09e7a1cee118d3545a14..c17bf4e4866e62bdf7a948482d457f4cbf696274 100644 (file)
@@ -1,3 +1,10 @@
+Sat Sep 18 11:52:43 1999  Richard Henderson  <rth@cygnus.com>
+
+       * c-pragma.c (mark_align_stack): New.
+       (init_pragma): New.
+       * c-pragma.h (init_pragma): Declare it.
+       * c-lex.c (init_parse): Call it.
+
 Sat Sep 18 15:20:38 1999  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
 
        * configure.in: Pick up thread library on Solaris/x86 just
index c4619c4ef5d5721d8a1b243bd47d20cd389dc1fb..bd171abe248382265ec8514e5f2ab49c9eedab42 100644 (file)
@@ -254,6 +254,7 @@ init_parse (filename)
 #endif
 
   init_lex ();
+  init_pragma ();
 
   return filename;
 }
index c002587b4f1f95a7140754b8ae11f0c1b3032e22..ba0c83673908d3fcd4792067bbc4031deaa31a60 100644 (file)
@@ -512,3 +512,27 @@ handle_pragma_token (string, token)
   return 1;
 }
 #endif /* HANDLE_GENERIC_PRAGMAS */
+\f
+#ifdef HANDLE_PRAGMA_PACK_PUSH_POP
+static void
+mark_align_stack (p)
+    void *p;
+{
+  align_stack *a = (align_stack *) p;
+
+  while (a)
+    {
+      ggc_mark_tree (a->id);
+      a = a->prev;
+    }
+}
+#endif
+
+void
+init_pragma ()
+{
+#ifdef HANDLE_PRAGMA_PACK_PUSH_POP
+  ggc_add_root (&alignment_stack, 1, sizeof(alignment_stack),
+               mark_align_stack);
+#endif
+}
index bfe7c1fe50a5e30b3dee4ec441a1e938cc1ae160..0fbf77cb2ac5dace307b00a545e67212637f7884 100644 (file)
@@ -98,4 +98,7 @@ enum pragma_state
 extern int handle_pragma_token PROTO((const char *, tree));
 
 #endif /* HANDLE_GENERIC_PRAGMAS */
+
+extern void init_pragma PROTO((void));
+
 #endif /* _C_PRAGMA_H */