[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
This commit is contained in:
parent
43af5ef1ce
commit
c9fb347ea1
@ -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.
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user