Skip to content

Commit

Permalink
[3/7] Preprocessor macro loc
Browse files Browse the repository at this point in the history
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
  • Loading branch information
urnathan authored and Nathan Sidwell committed Oct 31, 2018
1 parent 43af5ef commit c9fb347
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 16 deletions.
5 changes: 5 additions & 0 deletions libcpp/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
2018-10-31 Nathan Sidwell <[email protected]>

* 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.

Expand Down
5 changes: 4 additions & 1 deletion libcpp/include/cpplib.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
20 changes: 5 additions & 15 deletions libcpp/macro.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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 (&macro1->exp.tokens[i], &macro2->exp.tokens[i]))
return true;

Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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;
}

0 comments on commit c9fb347

Please sign in to comment.