aboutsummaryrefslogtreecommitdiff
path: root/lib/AST/StmtPrinter.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-04-14 02:25:56 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-04-14 02:25:56 +0000
commit5466c7b0ca8ce662e2c0bc295cecba2b78d6957d (patch)
treef2e6d04f1fdd87b396c1508c82eaaad032cfd73b /lib/AST/StmtPrinter.cpp
parentb286a78c8cce4592306dae6abc3656daf6379c77 (diff)
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69020 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/StmtPrinter.cpp')
-rw-r--r--lib/AST/StmtPrinter.cpp12
1 files changed, 3 insertions, 9 deletions
diff --git a/lib/AST/StmtPrinter.cpp b/lib/AST/StmtPrinter.cpp
index b55bddfed0..7f9c4cc8fb 100644
--- a/lib/AST/StmtPrinter.cpp
+++ b/lib/AST/StmtPrinter.cpp
@@ -117,15 +117,9 @@ void StmtPrinter::PrintRawDecl(Decl *D) {
} else if (ValueDecl *VD = dyn_cast<ValueDecl>(D)) {
// 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: OS << "extern "; break;
- case VarDecl::Static: OS << "static "; break;
- case VarDecl::Auto: OS << "auto "; break;
- case VarDecl::Register: OS << "register "; break;
- case VarDecl::PrivateExtern: OS << "__private_extern "; break;
- }
+ if (V->getStorageClass() != VarDecl::None)
+ OS << VarDecl::getStorageClassSpecifierString(V->getStorageClass())
+ << ' ';
}
std::string Name = VD->getNameAsString();