aboutsummaryrefslogtreecommitdiff
path: root/libcpp/internal.h
diff options
context:
space:
mode:
authorKai Tietz <kai.tietz@onevision.com>2009-11-11 18:37:19 +0000
committerKai Tietz <ktietz@gcc.gnu.org>2009-11-11 19:37:19 +0100
commit17e7cb855000baa6598005571d7dd49cfac5282a (patch)
treee54ead3691775dbb1e9d31588966d79cac024672 /libcpp/internal.h
parent110532c838d2302c88de13ad88f81ec975ed4b1e (diff)
downloadgcc-17e7cb855000baa6598005571d7dd49cfac5282a.zip
gcc-17e7cb855000baa6598005571d7dd49cfac5282a.tar.gz
gcc-17e7cb855000baa6598005571d7dd49cfac5282a.tar.bz2
ChangeLog for libcpp
2009-11-11 Kai Tietz <kai.tietz@onevision.com> * directives.c (do_pragma_push_macro): New pragma handler. (do_pragma_pop_macro): Likewise. (_cpp_init_internal_pragmas): Add push_macro and pop_macro handler to internal pragmas. (lex_macro_node_from_str): Removed. (cpp_push_definition): Replace lex_macro_node_from_str by _cpp_lex_identifier. (cpp_pop_definition): Likewise. * internal.h (_cpp_lex_identifier): New prototype. (def_pragma_macro): New structure. (cpp_reader): New member pushed_macros. * lex.c (_cpp_lex_identifier): New function. (lex_identifier_intern): New function. * init.c (cpp_create_reader): Initialize pushed_macros member. (cpp_destroy): Free elements in pushed_macros member. * pch.c (_cpp_save_pushed_macros): New function. (_cpp_restore_pushed_macros): Likewise. (_cpp_restore_pushed_macros): Use _cpp_save_pushed_macros. (cpp_read_state): Use _cpp_restore_pushed_macros. ChangeLog for gcc 2009-11-11 Kai Tietz <kai.tietz@onevision.com> * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed. * c-pragma.c (def_pragma_macro_value): Likewise. (def_pragma_macro): Likewise. (pushed_macro_table): Likewise. (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code. * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed. ChangeLog for gcc/testsuite 2009-11-11 Kai Tietz <kai.tietz@onevision.com> * g++.dg/torture/pushpop_macro.C: New testcase. * gcc.c-torture/execute/pushpop_macro.c: New testcase. * gcc.dg/cpp/pragma-pop_macro-1.c: Allow test for all targets. From-SVN: r154098
Diffstat (limited to 'libcpp/internal.h')
-rw-r--r--libcpp/internal.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/libcpp/internal.h b/libcpp/internal.h
index aaa231c..555874c 100644
--- a/libcpp/internal.h
+++ b/libcpp/internal.h
@@ -305,6 +305,16 @@ struct cpp_buffer
struct cset_converter input_cset_desc;
};
+/* The list of saved macros by push_macro pragma. */
+struct def_pragma_macro {
+ /* Chain element to previous saved macro. */
+ struct def_pragma_macro *next;
+ /* Name of the macro. */
+ char *name;
+ /* The stored macro content. */
+ cpp_macro *value;
+};
+
/* A cpp_reader encapsulates the "state" of a pre-processor run.
Applying cpp_get_token repeatedly yields a stream of pre-processor
tokens. Usually, there is only one cpp_reader object active. */
@@ -475,6 +485,9 @@ struct cpp_reader
/* Table of comments, when state.save_comments is true. */
cpp_comment_table comments;
+
+ /* List of saved macros by push_macro. */
+ struct def_pragma_macro *pushed_macros;
};
/* Character classes. Based on the more primitive macros in safe-ctype.h.
@@ -575,6 +588,7 @@ extern const cpp_token *_cpp_lex_token (cpp_reader *);
extern cpp_token *_cpp_lex_direct (cpp_reader *);
extern int _cpp_equiv_tokens (const cpp_token *, const cpp_token *);
extern void _cpp_init_tokenrun (tokenrun *, unsigned int);
+extern cpp_hashnode *_cpp_lex_identifier (cpp_reader *, const char *);
/* In init.c. */
extern void _cpp_maybe_push_include_file (cpp_reader *);