aboutsummaryrefslogtreecommitdiff
path: root/libcpp/internal.h
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2018-08-17 16:07:19 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2018-08-17 16:07:19 +0000
commit10f04917abbc42e3717d33d9b5079aa4f9eb9ac5 (patch)
treed1b399c099142510b8abea59d95c27a5dd4ecf58 /libcpp/internal.h
parentc5d725c0a8da3b2227d119871e881d8a6e1bf600 (diff)
downloadgcc-10f04917abbc42e3717d33d9b5079aa4f9eb9ac5.zip
gcc-10f04917abbc42e3717d33d9b5079aa4f9eb9ac5.tar.gz
gcc-10f04917abbc42e3717d33d9b5079aa4f9eb9ac5.tar.bz2
[PATCH] Macro body is trailing array
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01037.html * include/cpplib.h (enum cpp_macro_kind): New. (struct cpp_macro): Make body trailing array. Add kind field, delete traditional flag. * internal.h (_cpp_new_macro): Declare. (_cpp_reserve_room): New inline. (_cpp_commit_buf): Declare. (_cpp_create_trad_definition): Return new macro. * lex.c (_cpp_commit_buff): New. * macro.c (macro_real_token_count): Count backwards. (replace_args): Pointer equality not orderedness. (_cpp_save_parameter): Use _cpp_reserve_room. (alloc_expansion_token): Delete. (lex_expansion_token): Return macro pointer. Use _cpp_reserve_room. (create_iso_definition): Allocate macro itself. Adjust for different allocation ordering. (_cpp_new_macro): New. (_cpp_create_definition): Adjust for API changes. * traditional.c (push_replacement_text): Don't set traditional flag. (save_replacement_text): Likewise. (_cpp_create_trad_definition): Allocate macro itself, Adjust for different allocation ordering. From-SVN: r263622
Diffstat (limited to 'libcpp/internal.h')
-rw-r--r--libcpp/internal.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/libcpp/internal.h b/libcpp/internal.h
index 0c2395a..e40b20f 100644
--- a/libcpp/internal.h
+++ b/libcpp/internal.h
@@ -633,6 +633,7 @@ inline void _cpp_maybe_notify_macro_use (cpp_reader *pfile, cpp_hashnode *node)
if (!(node->flags & NODE_USED))
_cpp_notify_macro_use (pfile, node);
}
+extern cpp_macro *_cpp_new_macro (cpp_reader *, cpp_macro_kind, void *);
extern void _cpp_free_definition (cpp_hashnode *);
extern bool _cpp_create_definition (cpp_reader *, cpp_hashnode *);
extern void _cpp_pop_context (cpp_reader *);
@@ -697,6 +698,14 @@ extern void _cpp_init_tokenrun (tokenrun *, unsigned int);
extern cpp_hashnode *_cpp_lex_identifier (cpp_reader *, const char *);
extern int _cpp_remaining_tokens_num_in_context (cpp_context *);
extern void _cpp_init_lexer (void);
+static inline void *_cpp_reserve_room (cpp_reader *pfile, size_t have,
+ size_t extra)
+{
+ if (BUFF_ROOM (pfile->a_buff) < (have + extra))
+ _cpp_extend_buff (pfile, &pfile->a_buff, extra);
+ return BUFF_FRONT (pfile->a_buff);
+}
+extern void *_cpp_commit_buff (cpp_reader *pfile, size_t size);
/* In init.c. */
extern void _cpp_maybe_push_include_file (cpp_reader *);
@@ -733,7 +742,7 @@ extern bool _cpp_read_logical_line_trad (cpp_reader *);
extern void _cpp_overlay_buffer (cpp_reader *pfile, const unsigned char *,
size_t);
extern void _cpp_remove_overlay (cpp_reader *);
-extern bool _cpp_create_trad_definition (cpp_reader *, cpp_macro *);
+extern cpp_macro *_cpp_create_trad_definition (cpp_reader *);
extern bool _cpp_expansions_different_trad (const cpp_macro *,
const cpp_macro *);
extern unsigned char *_cpp_copy_replacement_text (const cpp_macro *,