From a0be978a8216b58562c8eff71df977aca7d78387 Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Wed, 28 Aug 2019 18:43:37 +0000 Subject: [PATCH] [Preprocessor] small cleanups https://gcc.gnu.org/ml/gcc-patches/2019-08/msg01904.html * directives-only.c (_cpp_preprocess_dir_only): Use false, not zero for _cpp_handle_directive call. * directives.c (_cpp_handle_directive): Indented is bool. * files.c (struct _cpp_file): Make bools 1 bit bitfields. * internal.h (enum include_type): Reformat and comment. (struct cpp_buffer): Make flags 1 bit bitfields. (_cpp_handle_directive): Indented is bool. From-SVN: r274999 --- libcpp/ChangeLog | 10 ++++++++++ libcpp/directives-only.c | 2 +- libcpp/directives.c | 4 ++-- libcpp/files.c | 10 +++++----- libcpp/internal.h | 26 ++++++++++++++++++-------- 5 files changed, 36 insertions(+), 16 deletions(-) diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index c6e8e04b46e..61d91acb2d7 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,13 @@ +2019-08-28 Nathan Sidwell + + * directives-only.c (_cpp_preprocess_dir_only): Use false, not + zero for _cpp_handle_directive call. + * directives.c (_cpp_handle_directive): Indented is bool. + * files.c (struct _cpp_file): Make bools 1 bit bitfields. + * internal.h (enum include_type): Reformat and comment. + (struct cpp_buffer): Make flags 1 bit bitfields. + (_cpp_handle_directive): Indented is bool. + 2019-07-09 Martin Sebor * include/line-map.h: Change class-key from class to struct and vice diff --git a/libcpp/directives-only.c b/libcpp/directives-only.c index 847225af825..fae3b5b4ba4 100644 --- a/libcpp/directives-only.c +++ b/libcpp/directives-only.c @@ -101,7 +101,7 @@ _cpp_preprocess_dir_only (cpp_reader *pfile, /* Ensure proper column numbering for generated error messages. */ buffer->line_base -= col - 1; - _cpp_handle_directive (pfile, 0 /* ignore indented */); + _cpp_handle_directive (pfile, false /* ignore indented */); /* Sanitize the line settings. Duplicate #include's can mess things up. */ diff --git a/libcpp/directives.c b/libcpp/directives.c index ddf8979d513..48271e1700e 100644 --- a/libcpp/directives.c +++ b/libcpp/directives.c @@ -406,13 +406,13 @@ directive_diagnostics (cpp_reader *pfile, const directive *dir, int indented) } } -/* Check if we have a known directive. INDENTED is nonzero if the +/* Check if we have a known directive. INDENTED is true if the '#' of the directive was indented. This function is in this file to save unnecessarily exporting dtable etc. to lex.c. Returns nonzero if the line of tokens has been handled, zero if we should continue processing the line. */ int -_cpp_handle_directive (cpp_reader *pfile, int indented) +_cpp_handle_directive (cpp_reader *pfile, bool indented) { const directive *dir = 0; const cpp_token *dname; diff --git a/libcpp/files.c b/libcpp/files.c index 6ef6d07b897..30c0cf25519 100644 --- a/libcpp/files.c +++ b/libcpp/files.c @@ -98,19 +98,19 @@ struct _cpp_file unsigned short stack_count; /* If opened with #import or contains #pragma once. */ - bool once_only; + bool once_only : 1; /* If read() failed before. */ - bool dont_read; + bool dont_read : 1; /* If this file is the main file. */ - bool main_file; + bool main_file : 1; /* If BUFFER above contains the true contents of the file. */ - bool buffer_valid; + bool buffer_valid : 1; /* If this file is implicitly preincluded. */ - bool implicit_preinclude; + bool implicit_preinclude : 1; }; /* A singly-linked list for all searches for a given file name, with diff --git a/libcpp/internal.h b/libcpp/internal.h index 45167a9500e..a86b58785e9 100644 --- a/libcpp/internal.h +++ b/libcpp/internal.h @@ -113,7 +113,17 @@ extern unsigned char *_cpp_unaligned_alloc (cpp_reader *, size_t); #define BUFF_LIMIT(BUFF) ((BUFF)->limit) /* #include types. */ -enum include_type {IT_INCLUDE, IT_INCLUDE_NEXT, IT_IMPORT, IT_CMDLINE, IT_DEFAULT}; +enum include_type + { + /* Directive-based including mechanisms. */ + IT_INCLUDE, /* #include */ + IT_INCLUDE_NEXT, /* #include_next */ + IT_IMPORT, /* #import */ + + /* Non-directive including mechanisms. */ + IT_CMDLINE, /* -include */ + IT_DEFAULT, /* forced header */ + }; union utoken { @@ -327,23 +337,23 @@ struct cpp_buffer struct if_stack *if_stack; /* True if we need to get the next clean line. */ - bool need_line; + bool need_line : 1; /* True if we have already warned about C++ comments in this file. The warning happens only for C89 extended mode with -pedantic on, or for -Wtraditional, and only once per file (otherwise it would be far too noisy). */ - unsigned int warned_cplusplus_comments : 1; + bool warned_cplusplus_comments : 1; /* True if we don't process trigraphs and escaped newlines. True for preprocessed input, command line directives, and _Pragma buffers. */ - unsigned int from_stage3 : 1; + bool from_stage3 : 1; /* At EOF, a buffer is automatically popped. If RETURN_AT_EOF is true, a CPP_EOF token is then returned. Otherwise, the next token from the enclosing buffer is returned. */ - unsigned int return_at_eof : 1; + bool return_at_eof : 1; /* One for a system header, two for a C system header file that therefore needs to be extern "C" protected in C++, and zero otherwise. */ @@ -419,13 +429,13 @@ struct cpp_reader /* This is the node representing the macro being expanded at top-level. The value of this data member is valid iff - in_macro_expansion_p() returns TRUE. */ + cpp_in_macro_expansion_p() returns TRUE. */ cpp_hashnode *top_most_macro_node; /* Nonzero if we are about to expand a macro. Note that if we are really expanding a macro, the function macro_of_context returns the macro being expanded and this flag is set to false. Client - code should use the function in_macro_expansion_p to know if we + code should use the function cpp_in_macro_expansion_p to know if we are either about to expand a macro, or are actually expanding one. */ bool about_to_expand_macro_p; @@ -711,7 +721,7 @@ extern const char *cpp_named_operator2name (enum cpp_ttype type); /* In directives.c */ extern int _cpp_test_assertion (cpp_reader *, unsigned int *); -extern int _cpp_handle_directive (cpp_reader *, int); +extern int _cpp_handle_directive (cpp_reader *, bool); extern void _cpp_define_builtin (cpp_reader *, const char *); extern char ** _cpp_save_pragma_names (cpp_reader *); extern void _cpp_restore_pragma_names (cpp_reader *, char **); -- 2.30.2