]> granicus.if.org Git - clang/commitdiff
Introduce ASTWriter::GetOrCreateTypeID and move most of the functionality of AddTypeR...
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 20 Aug 2010 16:04:14 +0000 (16:04 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 20 Aug 2010 16:04:14 +0000 (16:04 +0000)
No functionality change.

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

include/clang/Serialization/ASTWriter.h
lib/Serialization/ASTWriter.cpp

index 1634dfb26293e086cc5c825bdca58a64ab2f8bfb..c1b189a978a877b3f300281a60be6339c0d83385 100644 (file)
@@ -364,6 +364,9 @@ public:
   /// \brief Emit a reference to a type.
   void AddTypeRef(QualType T, RecordData &Record);
 
+  /// \brief Force a type to be emitted and get its ID.
+  serialization::TypeID GetOrCreateTypeID(QualType T);
+
   /// \brief Force a type to be emitted and get its index.
   serialization::TypeIdx GetOrCreateTypeIdx(QualType T);
 
index 16c6f4b10105821a925ff0be5f88592482111edf..5a376a9f12c715eb2884eec30a66db3833ebc7b3 100644 (file)
@@ -2579,21 +2579,18 @@ void ASTWriter::AddTypeSourceInfo(TypeSourceInfo *TInfo, RecordData &Record) {
 }
 
 void ASTWriter::AddTypeRef(QualType T, RecordData &Record) {
-  if (T.isNull()) {
-    Record.push_back(PREDEF_TYPE_NULL_ID);
-    return;
-  }
+  Record.push_back(GetOrCreateTypeID(T));
+}
+
+TypeID ASTWriter::GetOrCreateTypeID(QualType T) {
+  if (T.isNull())
+    return PREDEF_TYPE_NULL_ID;
 
   unsigned FastQuals = T.getLocalFastQualifiers();
   T.removeFastQualifiers();
 
-  if (T.hasLocalNonFastQualifiers()) {
-    TypeIdx Idx = GetOrCreateTypeIdx(T);
-
-    // Encode the type qualifiers in the type reference.
-    Record.push_back(Idx.asTypeID(FastQuals));
-    return;
-  }
+  if (T.hasLocalNonFastQualifiers())
+    return GetOrCreateTypeIdx(T).asTypeID(FastQuals);
 
   assert(!T.hasLocalQualifiers());
 
@@ -2633,14 +2630,10 @@ void ASTWriter::AddTypeRef(QualType T, RecordData &Record) {
       break;
     }
 
-    Record.push_back(TypeIdx(ID).asTypeID(FastQuals));
-    return;
+    return TypeIdx(ID).asTypeID(FastQuals);
   }
 
-  TypeIdx Idx = GetOrCreateTypeIdx(T);
-
-  // Encode the type qualifiers in the type reference.
-  Record.push_back(Idx.asTypeID(FastQuals));
+  return GetOrCreateTypeIdx(T).asTypeID(FastQuals);
 }
 
 TypeIdx ASTWriter::GetOrCreateTypeIdx(QualType T) {