[cfe-commits] r44913 - /cfe/trunk/Parse/ParseDecl.cpp

Chris Lattner sabre at nondot.org
Tue Dec 11 22:13:27 PST 2007


Author: lattner
Date: Wed Dec 12 00:13:27 2007
New Revision: 44913

URL: http://llvm.org/viewvc/llvm-project?rev=44913&view=rev
Log:
simplify some code.

Modified:
    cfe/trunk/Parse/ParseDecl.cpp

Modified: cfe/trunk/Parse/ParseDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Parse/ParseDecl.cpp?rev=44913&r1=44912&r2=44913&view=diff

==============================================================================
--- cfe/trunk/Parse/ParseDecl.cpp (original)
+++ cfe/trunk/Parse/ParseDecl.cpp Wed Dec 12 00:13:27 2007
@@ -556,51 +556,33 @@
 /// qualifier list and builds their bitmask representation in the input
 /// argument.
 void Parser::ParseObjcTypeQualifierList(ObjcDeclSpec &DS) {
-  bool found = true;
-  while (found) {
-    found = false;
-    if (Tok.is(tok::identifier)) {
-      const IdentifierInfo *II = Tok.getIdentifierInfo();
-      unsigned i;
-      for (i = 0; i < objc_NumQuals; ++i) {
-        if (II == ObjcTypeQuals[i]) {
-          switch (i) {
-            case objc_in:
-              DS.setObjcDeclQualifier(ObjcDeclSpec::DQ_In);
-              ConsumeToken();
-              found = true;
-              break;
-            case objc_out:
-              DS.setObjcDeclQualifier(ObjcDeclSpec::DQ_Out);
-              ConsumeToken();
-              found = true;
-              break;
-            case objc_inout:
-              DS.setObjcDeclQualifier(ObjcDeclSpec::DQ_Inout);
-              ConsumeToken();
-              found = true;
-              break;
-            case objc_oneway:
-              DS.setObjcDeclQualifier(ObjcDeclSpec::DQ_Oneway);
-              ConsumeToken();
-              found = true;
-              break;
-            case objc_bycopy:
-              DS.setObjcDeclQualifier(ObjcDeclSpec::DQ_Bycopy);
-              ConsumeToken();
-              found = true;
-              break;
-            case objc_byref:
-              DS.setObjcDeclQualifier(ObjcDeclSpec::DQ_Byref);
-              ConsumeToken();
-              found = true;
-              break;
-          }
-          if (found)
-            break;
-        }
+  while (1) {
+    if (!Tok.is(tok::identifier))
+      return;
+    
+    const IdentifierInfo *II = Tok.getIdentifierInfo();
+    for (unsigned i = 0; i != objc_NumQuals; ++i) {
+      if (II != ObjcTypeQuals[i])
+        continue;
+      
+      ObjcDeclSpec::ObjcDeclQualifier Qual;
+      switch (i) {
+      default: assert(0 && "Unknown decl qualifier");
+      case objc_in:     Qual = ObjcDeclSpec::DQ_In; break;
+      case objc_out:    Qual = ObjcDeclSpec::DQ_Out; break;
+      case objc_inout:  Qual = ObjcDeclSpec::DQ_Inout; break;
+      case objc_oneway: Qual = ObjcDeclSpec::DQ_Oneway; break;
+      case objc_bycopy: Qual = ObjcDeclSpec::DQ_Bycopy; break;
+      case objc_byref:  Qual = ObjcDeclSpec::DQ_Byref; break;
       }
+      DS.setObjcDeclQualifier(Qual);
+      ConsumeToken();
+      II = 0;
+      break;
     }
+    
+    // If this wasn't a recognized qualifier, bail out.
+    if (II) return;
   }
 }
 





More information about the cfe-commits mailing list