Add VarDecl::getStorageClassSpecifierString (StorageClass -> const char*).
 - No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69019 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/clang/AST/Decl.h b/include/clang/AST/Decl.h
index 83de947..fd6e210 100644
--- a/include/clang/AST/Decl.h
+++ b/include/clang/AST/Decl.h
@@ -221,6 +221,13 @@
   enum StorageClass {
     None, Auto, Register, Extern, Static, PrivateExtern
   };
+
+  /// getStorageClassSpecifierString - Return the string used to
+  /// specify the storage class \arg SC.
+  ///
+  /// It is illegal to call this function with SC == None.
+  static const char *getStorageClassSpecifierString(StorageClass SC);
+
 private:
   Stmt *Init;
   // FIXME: This can be packed into the bitfields in Decl.
diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp
index f0d32c7..d733c8c 100644
--- a/lib/AST/Decl.cpp
+++ b/lib/AST/Decl.cpp
@@ -60,6 +60,20 @@
   return new (C) ImplicitParamDecl(ImplicitParam, DC, L, Id, T);
 }
 
+const char *VarDecl::getStorageClassSpecifierString(StorageClass SC) {
+  switch (SC) {
+  case VarDecl::None:          break;
+  case VarDecl::Auto:          return "auto"; break;
+  case VarDecl::Extern:        return "extern"; break;
+  case VarDecl::PrivateExtern: return "__private_extern__"; break; 
+  case VarDecl::Register:      return "register"; break;
+  case VarDecl::Static:        return "static"; break; 
+  }
+
+  assert(0 && "Invalid storage class");
+  return 0;
+}
+
 ParmVarDecl *ParmVarDecl::Create(ASTContext &C, DeclContext *DC,
                                  SourceLocation L, IdentifierInfo *Id,
                                  QualType T, StorageClass S,