forked from OSchip/llvm-project
Allow serializing an invalid ParmVarDecl and don't set access to public for
invalid ParmVarDecls. Part of rdar://11007039. llvm-svn: 152437
This commit is contained in:
parent
6c614bf717
commit
b7d1ca27bd
|
@ -69,7 +69,7 @@ const char *Decl::getDeclKindName() const {
|
|||
|
||||
void Decl::setInvalidDecl(bool Invalid) {
|
||||
InvalidDecl = Invalid;
|
||||
if (Invalid) {
|
||||
if (Invalid && !isa<ParmVarDecl>(this)) {
|
||||
// Defensive maneuver for ill-formed code: we're likely not to make it to
|
||||
// a point where we set the access specifier, so default it to "public"
|
||||
// to avoid triggering asserts elsewhere in the front end.
|
||||
|
|
|
@ -729,6 +729,7 @@ void ASTDeclWriter::VisitParmVarDecl(ParmVarDecl *D) {
|
|||
!D->hasExtInfo() &&
|
||||
!D->isImplicit() &&
|
||||
!D->isUsed(false) &&
|
||||
!D->isInvalidDecl() &&
|
||||
!D->isReferenced() &&
|
||||
D->getAccess() == AS_none &&
|
||||
!D->isModulePrivate() &&
|
||||
|
@ -744,7 +745,6 @@ void ASTDeclWriter::VisitParmVarDecl(ParmVarDecl *D) {
|
|||
|
||||
// Check things we know are true of *every* PARM_VAR_DECL, which is more than
|
||||
// just us assuming it.
|
||||
assert(!D->isInvalidDecl() && "Shouldn't emit invalid decls");
|
||||
assert(!D->isThreadSpecified() && "PARM_VAR_DECL can't be __thread");
|
||||
assert(D->getAccess() == AS_none && "PARM_VAR_DECL can't be public/private");
|
||||
assert(!D->isExceptionVariable() && "PARM_VAR_DECL can't be exception var");
|
||||
|
@ -1267,7 +1267,7 @@ void ASTWriter::WriteDeclsBlockAbbrevs() {
|
|||
// Decl
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // DeclContext
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // LexicalDeclContext
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isInvalidDecl (!?)
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isInvalidDecl
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // HasAttrs
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isImplicit
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isUsed
|
||||
|
@ -1299,7 +1299,7 @@ void ASTWriter::WriteDeclsBlockAbbrevs() {
|
|||
// Decl
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // DeclContext
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // LexicalDeclContext
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isInvalidDecl (!?)
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isInvalidDecl
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // HasAttrs
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isImplicit
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isUsed
|
||||
|
@ -1336,7 +1336,7 @@ void ASTWriter::WriteDeclsBlockAbbrevs() {
|
|||
// Decl
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // DeclContext
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // LexicalDeclContext
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isInvalidDecl (!?)
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isInvalidDecl
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // HasAttrs
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isImplicit
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isUsed
|
||||
|
@ -1383,7 +1383,7 @@ void ASTWriter::WriteDeclsBlockAbbrevs() {
|
|||
// Decl
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // DeclContext
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // LexicalDeclContext
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isInvalidDecl (!?)
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isInvalidDecl
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // HasAttrs
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isImplicit
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isUsed
|
||||
|
@ -1424,7 +1424,7 @@ void ASTWriter::WriteDeclsBlockAbbrevs() {
|
|||
// Decl
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // DeclContext
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // LexicalDeclContext
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isInvalidDecl (!?)
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isInvalidDecl
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // HasAttrs
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isImplicit
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isUsed
|
||||
|
@ -1474,7 +1474,7 @@ void ASTWriter::WriteDeclsBlockAbbrevs() {
|
|||
// Decl
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // DeclContext
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // LexicalDeclContext
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isInvalidDecl (!?)
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isInvalidDecl
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // HasAttrs
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isImplicit
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isUsed
|
||||
|
@ -1502,7 +1502,7 @@ void ASTWriter::WriteDeclsBlockAbbrevs() {
|
|||
// Decl
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // DeclContext
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // LexicalDeclContext
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isInvalidDecl (!?)
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isInvalidDecl
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // HasAttrs
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isImplicit
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isUsed
|
||||
|
|
|
@ -13,6 +13,8 @@ struct baz {
|
|||
zed h;
|
||||
};
|
||||
|
||||
void errparm(zed e);
|
||||
|
||||
struct S {
|
||||
{
|
||||
;
|
||||
|
|
Loading…
Reference in New Issue