This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[3/7] Preprocessor macro loc


Now that the cpp_macro structure is properly part of cpplib.h, we don't need to outline its location accessor function. Made inline thusly. Cleaned up duplicate macro checking a bit too.

applying to trunk

nathan

--
Nathan Sidwell
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.

Index: libcpp/include/cpplib.h
===================================================================
--- libcpp/include/cpplib.h	(revision 265671)
+++ libcpp/include/cpplib.h	(working copy)
@@ -1017,7 +1017,10 @@ inline bool cpp_fun_like_macro_p (cpp_ha
 
 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);
 
Index: libcpp/macro.c
===================================================================
--- libcpp/macro.c	(revision 265671)
+++ libcpp/macro.c	(working copy)
@@ -2980,13 +2980,11 @@ _cpp_backup_tokens (cpp_reader *pfile, u
 
 /* #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,
     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;
 
@@ -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,
   *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;
-}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]