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/CodeGen/CGExpr.cpp | |
| parent | b76b745707fd86a94372b9d983cfda4f2399366c (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.
llvm-svn: 69020
Diffstat (limited to 'clang/lib/CodeGen/CGExpr.cpp')
| -rw-r--r-- | clang/lib/CodeGen/CGExpr.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp index fe16c4d30fe7..a1eb5c4e5779 100644 --- a/clang/lib/CodeGen/CGExpr.cpp +++ b/clang/lib/CodeGen/CGExpr.cpp @@ -632,7 +632,7 @@ LValue CodeGenFunction::EmitDeclRefLValue(const DeclRefExpr *E) { isa<ImplicitParamDecl>(VD))) { LValue LV; bool GCable = VD->hasLocalStorage() && ! VD->getAttr<BlocksAttr>(); - if (VD->getStorageClass() == VarDecl::Extern) { + if (VD->hasExternalStorage()) { LV = LValue::MakeAddr(CGM.GetAddrOfGlobalVar(VD), E->getType().getCVRQualifiers(), getContext().getObjCGCAttrKind(E->getType())); |
