diff options
author | Nathan Sidwell <nathan@acm.org> | 2018-10-31 14:51:54 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2018-10-31 14:51:54 +0000 |
commit | c9fb347ea14cd8f519a71374c97547044413a71f (patch) | |
tree | a075488d4fef537b97d9429136a5011de627d980 /libcpp | |
parent | 43af5ef1cefc671f7baf3d0e33d46ab7f9a7d8b1 (diff) | |
download | gcc-c9fb347ea14cd8f519a71374c97547044413a71f.zip gcc-c9fb347ea14cd8f519a71374c97547044413a71f.tar.gz gcc-c9fb347ea14cd8f519a71374c97547044413a71f.tar.bz2 |
[3/7] Preprocessor macro loc
https://gcc.gnu.org/ml/gcc-patches/2018-10/msg02039.html
* include/cpplib.h (cpp_macro_definition_location): Make inline.
* macro.c (warn_of_redefinition): Fix comments, examine macro
type, use C++ for.
(cpp_macro_definition_location): Don't define here.
From-SVN: r265688
Diffstat (limited to 'libcpp')
-rw-r--r-- | libcpp/ChangeLog | 5 | ||||
-rw-r--r-- | libcpp/include/cpplib.h | 5 | ||||
-rw-r--r-- | libcpp/macro.c | 20 |
3 files changed, 14 insertions, 16 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index bcbfa97..a02a335 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,5 +1,10 @@ 2018-10-31 Nathan Sidwell <nathan@acm.org> + * include/cpplib.h (cpp_macro_definition_location): Make inline. + * macro.c (warn_of_redefinition): Fix comments, examine macro + type, use C++ for. + (cpp_macro_definition_location): Don't define here. + * include/cpplib.h (HT_NODE): Don't cast NODE. (NODE_LEN, NODE_NAME): Use HT_NODE. diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h index 345155b..a2dab52 100644 --- a/libcpp/include/cpplib.h +++ b/libcpp/include/cpplib.h @@ -1017,7 +1017,10 @@ inline bool cpp_fun_like_macro_p (cpp_hashnode *node) extern const unsigned char *cpp_macro_definition (cpp_reader *, cpp_hashnode *); -extern source_location cpp_macro_definition_location (cpp_hashnode *); +inline source_location cpp_macro_definition_location (cpp_hashnode *node) +{ + return node->value.macro->line; +} extern void _cpp_backup_tokens (cpp_reader *, unsigned int); extern const cpp_token *cpp_peek_token (cpp_reader *, int); diff --git a/libcpp/macro.c b/libcpp/macro.c index aacaf8c..bb3d958 100644 --- a/libcpp/macro.c +++ b/libcpp/macro.c @@ -2980,13 +2980,11 @@ _cpp_backup_tokens (cpp_reader *pfile, unsigned int count) /* #define directive parsing and handling. */ -/* Returns nonzero if a macro redefinition warning is required. */ +/* Returns true if a macro redefinition warning is required. */ static bool warn_of_redefinition (cpp_reader *pfile, cpp_hashnode *node, const cpp_macro *macro2) { - unsigned int i; - /* Some redefinitions need to be warned about regardless. */ if (node->flags & NODE_WARN) return true; @@ -3021,18 +3019,18 @@ warn_of_redefinition (cpp_reader *pfile, cpp_hashnode *node, return true; /* Check parameter spellings. */ - for (i = 0; i < macro1->paramc; i++) + for (unsigned i = macro1->paramc; i--; ) if (macro1->parm.params[i] != macro2->parm.params[i]) return true; /* Check the replacement text or tokens. */ - if (CPP_OPTION (pfile, traditional)) + if (macro1->kind == cmk_traditional) return _cpp_expansions_different_trad (macro1, macro2); if (macro1->count != macro2->count) return true; - for (i = 0; i < macro1->count; i++) + for (unsigned i= macro1->count; i--; ) if (!_cpp_equiv_tokens (¯o1->exp.tokens[i], ¯o2->exp.tokens[i])) return true; @@ -3439,7 +3437,7 @@ create_iso_definition (cpp_reader *pfile) (pfile, sizeof (cpp_macro) - sizeof (cpp_token) + sizeof (cpp_token) * macro->count); - /* Clear whitespace on first token for warn_of_redefinition(). */ + /* Clear whitespace on first token. */ if (macro->count) macro->exp.tokens[0].flags &= ~PREV_WHITE; @@ -3767,11 +3765,3 @@ cpp_macro_definition (cpp_reader *pfile, cpp_hashnode *node) *buffer = '\0'; return pfile->macro_buffer; } - -/* Get the line at which the macro was defined. */ - -source_location -cpp_macro_definition_location (cpp_hashnode *node) -{ - return node->value.macro->line; -} |