]> granicus.if.org Git - clang/commitdiff
Refactor MacroInfo so macro arguments can be iterated with range-based for loops.
authorDaniel Marjamaki <daniel.marjamaki@evidente.se>
Fri, 29 May 2015 09:15:24 +0000 (09:15 +0000)
committerDaniel Marjamaki <daniel.marjamaki@evidente.se>
Fri, 29 May 2015 09:15:24 +0000 (09:15 +0000)
No functional change intended.

Patch by Sebastian Edman!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@238547 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Lex/MacroInfo.h
lib/Lex/PPMacroExpansion.cpp
lib/Serialization/ASTWriter.cpp

index 73f140f5e8f8c84d1813841bc1205bda6a3393b9..8b82a5bc9310f9bfc5a21894c0bc66bc52294799 100644 (file)
@@ -178,10 +178,13 @@ public:
   arg_iterator arg_begin() const { return ArgumentList; }
   arg_iterator arg_end() const { return ArgumentList + NumArguments; }
   unsigned getNumArgs() const { return NumArguments; }
+  ArrayRef<const IdentifierInfo *> args() const {
+    return ArrayRef<const IdentifierInfo *>(ArgumentList, NumArguments);
+  }
 
   /// \brief Return the argument number of the specified identifier,
   /// or -1 if the identifier is not a formal argument identifier.
-  int getArgumentNum(IdentifierInfo *Arg) const {
+  int getArgumentNum(const IdentifierInfo *Arg) const {
     for (arg_iterator I = arg_begin(), E = arg_end(); I != E; ++I)
       if (*I == Arg)
         return I - arg_begin();
index 9046ad51c14ae0208c3c41ba94918b777aab4d30..03784e204503ad81f76d78b1bbec3e7ff36129be 100644 (file)
@@ -362,12 +362,8 @@ static bool isTrivialSingleTokenExpansion(const MacroInfo *MI,
 
   // If this is a function-like macro invocation, it's safe to trivially expand
   // as long as the identifier is not a macro argument.
-  for (MacroInfo::arg_iterator I = MI->arg_begin(), E = MI->arg_end();
-       I != E; ++I)
-    if (*I == II)
-      return false;   // Identifier is a macro argument.
+  return std::find(MI->arg_begin(), MI->arg_end(), II) == MI->arg_end();
 
-  return true;
 }
 
 
index bf74c8471c3dd0dc9ca85ad5dea4cd823633c6c9..e689234c20e914d860a1b0e422103bc8417e39fb 100644 (file)
@@ -2135,9 +2135,8 @@ void ASTWriter::WritePreprocessor(const Preprocessor &PP, bool IsModule) {
       Record.push_back(MI->isGNUVarargs());
       Record.push_back(MI->hasCommaPasting());
       Record.push_back(MI->getNumArgs());
-      for (MacroInfo::arg_iterator I = MI->arg_begin(), E = MI->arg_end();
-           I != E; ++I)
-        AddIdentifierRef(*I, Record);
+      for (const IdentifierInfo *Arg : MI->args())
+        AddIdentifierRef(Arg, Record);
     }
 
     // If we have a detailed preprocessing record, record the macro definition