aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1999-09-18 18:54:36 +0000
committerRichard Henderson <rth@cygnus.com>1999-09-18 18:54:36 +0000
commit035dbdf0d806a8c48d9b2260e59a4b162f7f3512 (patch)
tree873184a4e65c4fe3544f6b4689d5bacb6ebed1d7 /gcc
parent2c3f7dc55e61687515ea837d92069fd98d4974a1 (diff)
* c-pragma.c (mark_align_stack): New.
(init_pragma): New. * c-pragma.h (init_pragma): Declare it. * c-lex.c (init_parse): Call it. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@29502 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/c-lex.c1
-rw-r--r--gcc/c-pragma.c24
-rw-r--r--gcc/c-pragma.h3
4 files changed, 35 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c9f2d4ecbb3..c17bf4e4866 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/c-lex.c b/gcc/c-lex.c
index c4619c4ef5d..bd171abe248 100644
--- a/gcc/c-lex.c
+++ b/gcc/c-lex.c
@@ -254,6 +254,7 @@ init_parse (filename)
#endif
init_lex ();
+ init_pragma ();
return filename;
}
diff --git a/gcc/c-pragma.c b/gcc/c-pragma.c
index c002587b4f1..ba0c8367390 100644
--- a/gcc/c-pragma.c
+++ b/gcc/c-pragma.c
@@ -512,3 +512,27 @@ handle_pragma_token (string, token)
return 1;
}
#endif /* HANDLE_GENERIC_PRAGMAS */
+
+#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
+}
diff --git a/gcc/c-pragma.h b/gcc/c-pragma.h
index bfe7c1fe50a..0fbf77cb2ac 100644
--- a/gcc/c-pragma.h
+++ b/gcc/c-pragma.h
@@ -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 */