diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2009-04-14 02:25:56 +0000 | 
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2009-04-14 02:25:56 +0000 | 
| commit | 0ca16601290fa748148bc9cba4b63fb07157ea2d (patch) | |
| tree | 162e3061e09aed5495675f5b58882eecb08ea4d9 /clang/lib/AST/StmtDumper.cpp | |
| parent | b76b745707fd86a94372b9d983cfda4f2399366c (diff) | |
| download | bcm5719-llvm-0ca16601290fa748148bc9cba4b63fb07157ea2d.tar.gz bcm5719-llvm-0ca16601290fa748148bc9cba4b63fb07157ea2d.zip  | |
Audit __private_extern__ handling.
 - Exposed quite a few Sema issues and a CodeGen crash.
 - See FIXMEs in test case, and in SemaDecl.cpp (PR3983).
I'm skeptical that __private_extern__ should actually be a storage
class value. I think that __private_extern__ basically amounts to
  extern A __attribute__((visibility("hidden")))
and would be better off handled (a) as that, or (b) with an extra bit
in the VarDecl.
llvm-svn: 69020
Diffstat (limited to 'clang/lib/AST/StmtDumper.cpp')
| -rw-r--r-- | clang/lib/AST/StmtDumper.cpp | 11 | 
1 files changed, 3 insertions, 8 deletions
diff --git a/clang/lib/AST/StmtDumper.cpp b/clang/lib/AST/StmtDumper.cpp index fa3b40cebcd..821eb55c728 100644 --- a/clang/lib/AST/StmtDumper.cpp +++ b/clang/lib/AST/StmtDumper.cpp @@ -217,14 +217,9 @@ void StmtDumper::DumpDeclarator(Decl *D) {      fprintf(F, "\"");      // Emit storage class for vardecls.      if (VarDecl *V = dyn_cast<VarDecl>(VD)) { -      switch (V->getStorageClass()) { -      default: assert(0 && "Unknown storage class!"); -      case VarDecl::None:     break; -      case VarDecl::Extern:   fprintf(F, "extern "); break; -      case VarDecl::Static:   fprintf(F, "static "); break;  -      case VarDecl::Auto:     fprintf(F, "auto "); break; -      case VarDecl::Register: fprintf(F, "register "); break; -      } +      if (V->getStorageClass() != VarDecl::None) +        fprintf(F, "%s ",  +                VarDecl::getStorageClassSpecifierString(V->getStorageClass()));      }      std::string Name = VD->getNameAsString();  | 

