Add more support for Apple's "private extern" extension...
llvm-svn: 46371
This commit is contained in:
parent
109e362fbd
commit
fda820970a
|
|
@ -572,6 +572,7 @@ void CodeGenModule::EmitGlobalVar(const FileVarDecl *D) {
|
|||
assert(0 && "Can't have auto or register globals");
|
||||
case VarDecl::None:
|
||||
case VarDecl::Extern:
|
||||
case VarDecl::PrivateExtern:
|
||||
// todo: common
|
||||
break;
|
||||
case VarDecl::Static:
|
||||
|
|
|
|||
|
|
@ -447,8 +447,7 @@ void Parser::ParseDeclarationSpecifiers(DeclSpec &DS) {
|
|||
isInvalid = DS.SetStorageClassSpec(DeclSpec::SCS_extern, Loc, PrevSpec);
|
||||
break;
|
||||
case tok::kw___private_extern__:
|
||||
// FIXME: Implement private extern.
|
||||
isInvalid = DS.SetStorageClassSpec(DeclSpec::SCS_extern, Loc, PrevSpec);
|
||||
isInvalid = DS.SetStorageClassSpec(DeclSpec::SCS_private_extern, Loc, PrevSpec);
|
||||
break;
|
||||
case tok::kw_static:
|
||||
if (DS.isThreadSpecified())
|
||||
|
|
|
|||
|
|
@ -710,6 +710,7 @@ Sema::ActOnDeclarator(Scope *S, Declarator &D, DeclTy *lastDecl) {
|
|||
case DeclSpec::SCS_static: SC = VarDecl::Static; break;
|
||||
case DeclSpec::SCS_auto: SC = VarDecl::Auto; break;
|
||||
case DeclSpec::SCS_register: SC = VarDecl::Register; break;
|
||||
case DeclSpec::SCS_private_extern: SC = VarDecl::PrivateExtern; break;
|
||||
}
|
||||
if (S->getParent() == 0) {
|
||||
// C99 6.9p2: The storage-class specifiers auto and register shall not
|
||||
|
|
|
|||
|
|
@ -281,7 +281,7 @@ protected:
|
|||
class VarDecl : public ValueDecl {
|
||||
public:
|
||||
enum StorageClass {
|
||||
None, Extern, Static, Auto, Register
|
||||
None, Extern, Static, Auto, Register, PrivateExtern
|
||||
};
|
||||
StorageClass getStorageClass() const { return (StorageClass)SClass; }
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,8 @@ public:
|
|||
SCS_extern,
|
||||
SCS_static,
|
||||
SCS_auto,
|
||||
SCS_register
|
||||
SCS_register,
|
||||
SCS_private_extern
|
||||
};
|
||||
|
||||
// type-specifier
|
||||
|
|
|
|||
Loading…
Reference in New Issue