From 568767a62c1e147235e0645fe96beb533967add2 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sat, 18 Sep 1999 11:54:36 -0700 Subject: [PATCH] c-pragma.c (mark_align_stack): New. * 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 | 7 +++++++ gcc/c-lex.c | 1 + gcc/c-pragma.c | 24 ++++++++++++++++++++++++ gcc/c-pragma.h | 3 +++ 4 files changed, 35 insertions(+) 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 + + * 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 * 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 */ -- 2.30.2