forked from OSchip/llvm-project
[modules] Allow VarDecls with initializers to use special var abbrev.
Update storage sizes to fit the (past) changes in the VarDecl's data model. Update some comments. Patch partially reviewed by Richard Smith as part of https://reviews.llvm.org/D24508 llvm-svn: 283444
This commit is contained in:
parent
4d6f3088c3
commit
d1a88130c4
|
@ -1236,7 +1236,7 @@ ASTDeclReader::RedeclarableResult ASTDeclReader::VisitVarDeclImpl(VarDecl *VD) {
|
|||
|
||||
if (uint64_t Val = Record[Idx++]) {
|
||||
VD->setInit(Reader.ReadExpr(F));
|
||||
if (Val > 1) {
|
||||
if (Val > 1) { // IsInitKnownICE = 1, IsInitNotICE = 2, IsInitICE = 3
|
||||
EvaluatedStmt *Eval = VD->ensureEvaluatedStmt();
|
||||
Eval->CheckedICE = true;
|
||||
Eval->IsICE = Val == 3;
|
||||
|
|
|
@ -942,8 +942,6 @@ void ASTDeclWriter::VisitVarDecl(VarDecl *D) {
|
|||
D->getDeclName().getNameKind() == DeclarationName::Identifier &&
|
||||
!D->hasExtInfo() &&
|
||||
D->getFirstDecl() == D->getMostRecentDecl() &&
|
||||
D->getInitStyle() == VarDecl::CInit &&
|
||||
D->getInit() == nullptr &&
|
||||
D->getKind() == Decl::Var &&
|
||||
!D->isInline() &&
|
||||
!D->isConstexpr() &&
|
||||
|
@ -1880,9 +1878,9 @@ void ASTWriter::WriteDeclAbbrevs() {
|
|||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // InnerStartLoc
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // hasExtInfo
|
||||
// VarDecl
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // StorageClass
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // getTSCSpec
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // hasCXXDirectInitializer
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // SClass
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // TSCSpec
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // InitStyle
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // Linkage
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // HasInit
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // HasMemberSpecializationInfo
|
||||
|
@ -1956,9 +1954,9 @@ void ASTWriter::WriteDeclAbbrevs() {
|
|||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // InnerStartLoc
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // hasExtInfo
|
||||
// VarDecl
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // StorageClass
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 2)); // getTSCSpec
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // CXXDirectInitializer
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 3)); // SClass
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 2)); // TSCSpec
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 2)); // InitStyle
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // isExceptionVariable
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // isNRVOVariable
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // isCXXForRangeDecl
|
||||
|
@ -1969,8 +1967,8 @@ void ASTWriter::WriteDeclAbbrevs() {
|
|||
Abv->Add(BitCodeAbbrevOp(0)); // isInitCapture
|
||||
Abv->Add(BitCodeAbbrevOp(0)); // isPrevDeclInSameScope
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 3)); // Linkage
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // HasInit
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // HasMemberSpecInfo
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 2)); // IsInitICE (local)
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 2)); // VarKind (local enum)
|
||||
// Type Source Info
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6));
|
||||
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Array));
|
||||
|
|
Loading…
Reference in New Issue