[cfe-commits] r66317 - in /cfe/trunk: include/clang/Basic/Diagnostic.h include/clang/Basic/IdentifierTable.h lib/Basic/Diagnostic.cpp lib/Sema/SemaDeclObjC.cpp

Ted Kremenek kremenek at apple.com
Fri Mar 6 17:47:11 PST 2009


Author: kremenek
Date: Fri Mar  6 19:47:10 2009
New Revision: 66317

URL: http://llvm.org/viewvc/llvm-project?rev=66317&view=rev
Log:
Revert my last couple patches until I can get them to not make the tests fail.

Modified:
    cfe/trunk/include/clang/Basic/Diagnostic.h
    cfe/trunk/include/clang/Basic/IdentifierTable.h
    cfe/trunk/lib/Basic/Diagnostic.cpp
    cfe/trunk/lib/Sema/SemaDeclObjC.cpp

Modified: cfe/trunk/include/clang/Basic/Diagnostic.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Diagnostic.h?rev=66317&r1=66316&r2=66317&view=diff

==============================================================================
--- cfe/trunk/include/clang/Basic/Diagnostic.h (original)
+++ cfe/trunk/include/clang/Basic/Diagnostic.h Fri Mar  6 19:47:10 2009
@@ -15,7 +15,6 @@
 #define LLVM_CLANG_DIAGNOSTIC_H
 
 #include "clang/Basic/SourceLocation.h"
-#include "clang/Basic/IdentifierTable.h"
 #include <string>
 #include <cassert>
 
@@ -27,6 +26,7 @@
   class DiagnosticClient;
   class SourceRange;
   class DiagnosticBuilder;
+  class IdentifierInfo;
   
   // Import the diagnostic enums themselves.
   namespace diag {
@@ -142,8 +142,7 @@
     ak_identifierinfo,  // IdentifierInfo
     ak_qualtype,        // QualType
     ak_declarationname, // DeclarationName
-    ak_nameddecl,       // NamedDecl *
-    ak_selector         // Selector
+    ak_nameddecl        // NamedDecl *
   };
   
 private:  
@@ -485,13 +484,6 @@
 }
   
 inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,
-                                           Selector S) {
-  DB.AddTaggedVal(reinterpret_cast<intptr_t>(S.getAsOpaquePtr()),
-                  Diagnostic::ak_selector);
-  return DB;
-}  
-  
-inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,
                                            const SourceRange &R) {
   DB.AddSourceRange(R);
   return DB;
@@ -574,12 +566,6 @@
     return reinterpret_cast<IdentifierInfo*>(DiagObj->DiagArgumentsVal[Idx]);
   }
   
-  /// getArgSelector - Return the specified Selector argument.
-  Selector getArgSelector(unsigned Idx) const {
-    assert(getArgKind(Idx) == Diagnostic::ak_selector &&
-           "invalid argument accessor!");
-    return Selector(DiagObj->DiagArgumentsVal[Idx]);
-  }
   /// getRawArg - Return the specified non-string argument in an opaque form.
   intptr_t getRawArg(unsigned Idx) const {
     assert(getArgKind(Idx) != Diagnostic::ak_std_string &&

Modified: cfe/trunk/include/clang/Basic/IdentifierTable.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/IdentifierTable.h?rev=66317&r1=66316&r2=66317&view=diff

==============================================================================
--- cfe/trunk/include/clang/Basic/IdentifierTable.h (original)
+++ cfe/trunk/include/clang/Basic/IdentifierTable.h Fri Mar  6 19:47:10 2009
@@ -267,27 +267,24 @@
       HashTable.GetOrCreateValue(NameStart, NameEnd);
     
     IdentifierInfo *II = Entry.getValue();
-    if (II) return *II;
     
-    // No entry; if we have an external lookup, look there first.
-    if (ExternalLookup) {
-      II = ExternalLookup->get(NameStart, NameEnd);
-      if (II) {
-        // Cache in the StringMap for subsequent lookups.
-        Entry.setValue(II);
-        return *II;
+    if (!II) {
+      while (1) {
+        if (ExternalLookup) {
+          II = ExternalLookup->get(NameStart, NameEnd);          
+          if (II) break;
+        }
+        
+        void *Mem = getAllocator().Allocate<IdentifierInfo>();
+        II = new (Mem) IdentifierInfo();
+        break;
       }
-    }
 
-    // Lookups failed, make a new IdentifierInfo.
-    void *Mem = getAllocator().Allocate<IdentifierInfo>();
-    II = new (Mem) IdentifierInfo();
-    Entry.setValue(II);
-
-    // Make sure getName() knows how to find the IdentifierInfo
-    // contents.
-    II->Entry = &Entry;
+      Entry.setValue(II);
+      II->Entry = &Entry;
+    }
 
+    assert(II->Entry != 0);
     return *II;
   }
   
@@ -337,8 +334,6 @@
 /// selectors that take no arguments and selectors that take 1 argument, which 
 /// accounts for 78% of all selectors in Cocoa.h.
 class Selector {
-  friend class DiagnosticInfo;
-  
   enum IdentifierInfoFlag {
     // MultiKeywordSelector = 0.
     ZeroArg  = 0x1,
@@ -358,6 +353,13 @@
     assert((InfoPtr & ArgFlags) == 0 &&"Insufficiently aligned IdentifierInfo");
   }
   Selector(uintptr_t V) : InfoPtr(V) {}
+public:
+  friend class SelectorTable; // only the SelectorTable can create these
+  friend class DeclarationName; // and the AST's DeclarationName.
+
+  /// The default ctor should only be used when creating data structures that
+  ///  will contain selectors.
+  Selector() : InfoPtr(0) {}
   
   IdentifierInfo *getAsIdentifierInfo() const {
     if (getIdentifierInfoFlag())
@@ -367,14 +369,6 @@
   unsigned getIdentifierInfoFlag() const {
     return InfoPtr & ArgFlags;
   }
-public:
-  friend class SelectorTable; // only the SelectorTable can create these
-  friend class DeclarationName; // and the AST's DeclarationName.
-
-  /// The default ctor should only be used when creating data structures that
-  ///  will contain selectors.
-  Selector() : InfoPtr(0) {}
-
   /// operator==/!= - Indicate whether the specified selectors are identical.
   bool operator==(Selector RHS) const {
     return InfoPtr == RHS.InfoPtr;

Modified: cfe/trunk/lib/Basic/Diagnostic.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Diagnostic.cpp?rev=66317&r1=66316&r2=66317&view=diff

==============================================================================
--- cfe/trunk/lib/Basic/Diagnostic.cpp (original)
+++ cfe/trunk/lib/Basic/Diagnostic.cpp Fri Mar  6 19:47:10 2009
@@ -657,14 +657,6 @@
       OutStr.push_back('\'');
       break;
     }
-    case Diagnostic::ak_selector: {
-      Selector S = getArgSelector(ArgNo);
-      OutStr.push_back('\'');
-      const std::string &s = S.getAsString();
-      OutStr.append(&s[0], &s[0]+s.length());
-      OutStr.push_back('\'');
-      break;
-    }
     case Diagnostic::ak_qualtype:
     case Diagnostic::ak_declarationname:
     case Diagnostic::ak_nameddecl:

Modified: cfe/trunk/lib/Sema/SemaDeclObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclObjC.cpp?rev=66317&r1=66316&r2=66317&view=diff

==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclObjC.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclObjC.cpp Fri Mar  6 19:47:10 2009
@@ -1139,7 +1139,7 @@
     Diag(property->getLocation(), 
          diag::err_accessor_property_type_mismatch) 
       << property->getDeclName()
-      << GetterMethod->getSelector();
+      << GetterMethod->getSelector().getAsIdentifierInfo();
     Diag(GetterMethod->getLocation(), diag::note_declared_at);
   }
   
@@ -1152,7 +1152,7 @@
       Diag(property->getLocation(), 
            diag::err_accessor_property_type_mismatch) 
         << property->getDeclName()
-        << SetterMethod->getSelector();
+        << SetterMethod->getSelector().getAsIdentifierInfo();
       Diag(SetterMethod->getLocation(), diag::note_declared_at);
     }
   }





More information about the cfe-commits mailing list