Skip to content

Commit 8c33462

Browse files
committed
Revert "[NFC] [Serialization] Packing more bits"
This reverts commit 9406ea3. There are build bots complaining this. Revert it first to try to keep the bots green.
1 parent d1a83ff commit 8c33462

File tree

5 files changed

+138
-162
lines changed

5 files changed

+138
-162
lines changed

clang/lib/Serialization/ASTReaderDecl.cpp

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -583,9 +583,6 @@ void ASTDeclReader::Visit(Decl *D) {
583583
}
584584

585585
void ASTDeclReader::VisitDecl(Decl *D) {
586-
BitsUnpacker DeclBits(Record.readInt());
587-
bool HasStandaloneLexicalDC = DeclBits.getNextBit();
588-
589586
if (D->isTemplateParameter() || D->isTemplateParameterPack() ||
590587
isa<ParmVarDecl, ObjCTypeParamDecl>(D)) {
591588
// We don't want to deserialize the DeclContext of a template
@@ -595,8 +592,7 @@ void ASTDeclReader::VisitDecl(Decl *D) {
595592
// return type of the function). Use the translation unit DeclContext as a
596593
// placeholder.
597594
GlobalDeclID SemaDCIDForTemplateParmDecl = readDeclID();
598-
GlobalDeclID LexicalDCIDForTemplateParmDecl =
599-
HasStandaloneLexicalDC ? readDeclID() : 0;
595+
GlobalDeclID LexicalDCIDForTemplateParmDecl = readDeclID();
600596
if (!LexicalDCIDForTemplateParmDecl)
601597
LexicalDCIDForTemplateParmDecl = SemaDCIDForTemplateParmDecl;
602598
Reader.addPendingDeclContextInfo(D,
@@ -605,8 +601,7 @@ void ASTDeclReader::VisitDecl(Decl *D) {
605601
D->setDeclContext(Reader.getContext().getTranslationUnitDecl());
606602
} else {
607603
auto *SemaDC = readDeclAs<DeclContext>();
608-
auto *LexicalDC =
609-
HasStandaloneLexicalDC ? readDeclAs<DeclContext>() : nullptr;
604+
auto *LexicalDC = readDeclAs<DeclContext>();
610605
if (!LexicalDC)
611606
LexicalDC = SemaDC;
612607
// If the context is a class, we might not have actually merged it yet, in
@@ -623,6 +618,7 @@ void ASTDeclReader::VisitDecl(Decl *D) {
623618
}
624619
D->setLocation(ThisDeclLoc);
625620

621+
BitsUnpacker DeclBits(Record.readInt());
626622
D->InvalidDecl = DeclBits.getNextBit();
627623
bool HasAttrs = DeclBits.getNextBit();
628624
D->setImplicit(DeclBits.getNextBit());
@@ -769,7 +765,7 @@ ASTDeclReader::RedeclarableResult ASTDeclReader::VisitTagDecl(TagDecl *TD) {
769765
TD->setCompleteDefinitionRequired(TagDeclBits.getNextBit());
770766
TD->setBraceRange(readSourceRange());
771767

772-
switch (TagDeclBits.getNextBits(/*Width=*/2)) {
768+
switch (Record.readInt()) {
773769
case 0:
774770
break;
775771
case 1: { // ExtInfo
@@ -1093,8 +1089,7 @@ void ASTDeclReader::VisitFunctionDecl(FunctionDecl *FD) {
10931089
FD->setCachedLinkage((Linkage)FunctionDeclBits.getNextBits(/*Width=*/3));
10941090

10951091
FD->EndRangeLoc = readSourceLocation();
1096-
if (FD->isExplicitlyDefaulted())
1097-
FD->setDefaultLoc(readSourceLocation());
1092+
FD->setDefaultLoc(readSourceLocation());
10981093

10991094
FD->ODRHash = Record.readInt();
11001095
FD->setHasODRHash(true);
@@ -1708,7 +1703,7 @@ void ASTDeclReader::VisitParmVarDecl(ParmVarDecl *PD) {
17081703
unsigned isObjCMethodParam = ParmVarDeclBits.getNextBit();
17091704
unsigned scopeDepth = ParmVarDeclBits.getNextBits(/*Width=*/7);
17101705
unsigned scopeIndex = ParmVarDeclBits.getNextBits(/*Width=*/8);
1711-
unsigned declQualifier = ParmVarDeclBits.getNextBits(/*Width=*/7);
1706+
unsigned declQualifier = Record.readInt();
17121707
if (isObjCMethodParam) {
17131708
assert(scopeDepth == 0);
17141709
PD->setObjCMethodScopeInfo(scopeIndex);
@@ -1721,9 +1716,7 @@ void ASTDeclReader::VisitParmVarDecl(ParmVarDecl *PD) {
17211716
PD->ParmVarDeclBits.HasInheritedDefaultArg = ParmVarDeclBits.getNextBit();
17221717
if (ParmVarDeclBits.getNextBit()) // hasUninstantiatedDefaultArg.
17231718
PD->setUninstantiatedDefaultArg(Record.readExpr());
1724-
1725-
if (ParmVarDeclBits.getNextBit()) // Valid explicit object parameter
1726-
PD->ExplicitObjectParameterIntroducerLoc = Record.readSourceLocation();
1719+
PD->ExplicitObjectParameterIntroducerLoc = Record.readSourceLocation();
17271720

17281721
// FIXME: If this is a redeclaration of a function from another module, handle
17291722
// inheritance of default arguments.

clang/lib/Serialization/ASTReaderStmt.cpp

Lines changed: 30 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ namespace clang {
108108

109109
/// The number of record fields required for the Expr class
110110
/// itself.
111-
static const unsigned NumExprFields = NumStmtFields + 2;
111+
static const unsigned NumExprFields = NumStmtFields + 4;
112112

113113
/// Read and initialize a ExplicitTemplateArgumentList structure.
114114
void ReadTemplateKWAndArgsInfo(ASTTemplateKWAndArgsInfo &Args,
@@ -524,13 +524,9 @@ void ASTStmtReader::VisitCapturedStmt(CapturedStmt *S) {
524524
void ASTStmtReader::VisitExpr(Expr *E) {
525525
VisitStmt(E);
526526
E->setType(Record.readType());
527-
BitsUnpacker ExprBits(Record.readInt());
528-
E->setDependence(
529-
static_cast<ExprDependence>(ExprBits.getNextBits(/*Width=*/5)));
530-
E->setValueKind(
531-
static_cast<ExprValueKind>(ExprBits.getNextBits(/*Width=*/2)));
532-
E->setObjectKind(
533-
static_cast<ExprObjectKind>(ExprBits.getNextBits(/*Width=*/3)));
527+
E->setDependence(static_cast<ExprDependence>(Record.readInt()));
528+
E->setValueKind(static_cast<ExprValueKind>(Record.readInt()));
529+
E->setObjectKind(static_cast<ExprObjectKind>(Record.readInt()));
534530
assert(Record.getIdx() == NumExprFields &&
535531
"Incorrect expression field count");
536532
}
@@ -999,19 +995,14 @@ void ASTStmtReader::VisitOMPIteratorExpr(OMPIteratorExpr *E) {
999995

1000996
void ASTStmtReader::VisitCallExpr(CallExpr *E) {
1001997
VisitExpr(E);
1002-
1003-
BitsUnpacker CallExprBits = Record.readInt();
1004-
1005-
unsigned NumArgs = CallExprBits.getNextBits(/*Width=*/16);
1006-
bool HasFPFeatures = CallExprBits.getNextBit();
1007-
E->setADLCallKind(
1008-
static_cast<CallExpr::ADLCallKind>(CallExprBits.getNextBit()));
998+
unsigned NumArgs = Record.readInt();
999+
bool HasFPFeatures = Record.readInt();
10091000
assert((NumArgs == E->getNumArgs()) && "Wrong NumArgs!");
10101001
E->setRParenLoc(readSourceLocation());
10111002
E->setCallee(Record.readSubExpr());
10121003
for (unsigned I = 0; I != NumArgs; ++I)
10131004
E->setArg(I, Record.readSubExpr());
1014-
1005+
E->setADLCallKind(static_cast<CallExpr::ADLCallKind>(Record.readInt()));
10151006
if (HasFPFeatures)
10161007
E->setStoredFPFeatures(
10171008
FPOptionsOverride::getFromOpaqueInt(Record.readInt()));
@@ -2022,15 +2013,14 @@ ASTStmtReader::VisitCXXUnresolvedConstructExpr(CXXUnresolvedConstructExpr *E) {
20222013
void ASTStmtReader::VisitOverloadExpr(OverloadExpr *E) {
20232014
VisitExpr(E);
20242015

2025-
BitsUnpacker OverloadExprBits = Record.readInt();
2026-
unsigned NumResults = OverloadExprBits.getNextBits(/*Width=*/14);
2027-
bool HasTemplateKWAndArgsInfo = OverloadExprBits.getNextBit();
2016+
unsigned NumResults = Record.readInt();
2017+
bool HasTemplateKWAndArgsInfo = Record.readInt();
20282018
assert((E->getNumDecls() == NumResults) && "Wrong NumResults!");
20292019
assert((E->hasTemplateKWAndArgsInfo() == HasTemplateKWAndArgsInfo) &&
20302020
"Wrong HasTemplateKWAndArgsInfo!");
20312021

20322022
if (HasTemplateKWAndArgsInfo) {
2033-
unsigned NumTemplateArgs = OverloadExprBits.getNextBits(/*Width=*/14);
2023+
unsigned NumTemplateArgs = Record.readInt();
20342024
ReadTemplateKWAndArgsInfo(*E->getTrailingASTTemplateKWAndArgsInfo(),
20352025
E->getTrailingTemplateArgumentLoc(),
20362026
NumTemplateArgs);
@@ -3034,9 +3024,8 @@ Stmt *ASTReader::ReadStmtFromStream(ModuleFile &F) {
30343024

30353025
case EXPR_CALL:
30363026
S = CallExpr::CreateEmpty(
3037-
Context, /*NumArgs=*/Record[ASTStmtReader::NumExprFields] & 0xffff,
3038-
/*HasFPFeatures=*/
3039-
((Record[ASTStmtReader::NumExprFields] >> 16) & 0x1), Empty);
3027+
Context, /*NumArgs=*/Record[ASTStmtReader::NumExprFields],
3028+
/*HasFPFeatures=*/Record[ASTStmtReader::NumExprFields + 1], Empty);
30403029
break;
30413030

30423031
case EXPR_RECOVERY:
@@ -3777,16 +3766,14 @@ Stmt *ASTReader::ReadStmtFromStream(ModuleFile &F) {
37773766

37783767
case EXPR_CXX_OPERATOR_CALL:
37793768
S = CXXOperatorCallExpr::CreateEmpty(
3780-
Context, /*NumArgs=*/Record[ASTStmtReader::NumExprFields] & 0xffff,
3781-
/*HasFPFeatures=*/
3782-
((Record[ASTStmtReader::NumExprFields] >> 16) & 0x1), Empty);
3769+
Context, /*NumArgs=*/Record[ASTStmtReader::NumExprFields],
3770+
/*HasFPFeatures=*/Record[ASTStmtReader::NumExprFields + 1], Empty);
37833771
break;
37843772

37853773
case EXPR_CXX_MEMBER_CALL:
37863774
S = CXXMemberCallExpr::CreateEmpty(
3787-
Context, /*NumArgs=*/Record[ASTStmtReader::NumExprFields] & 0xffff,
3788-
/*HasFPFeatures=*/
3789-
((Record[ASTStmtReader::NumExprFields] >> 16) & 0x1), Empty);
3775+
Context, /*NumArgs=*/Record[ASTStmtReader::NumExprFields],
3776+
/*HasFPFeatures=*/Record[ASTStmtReader::NumExprFields + 1], Empty);
37903777
break;
37913778

37923779
case EXPR_CXX_REWRITTEN_BINARY_OPERATOR:
@@ -3961,21 +3948,23 @@ Stmt *ASTReader::ReadStmtFromStream(ModuleFile &F) {
39613948
case EXPR_CXX_UNRESOLVED_MEMBER:
39623949
S = UnresolvedMemberExpr::CreateEmpty(
39633950
Context,
3964-
/*NumResults=*/Record[ASTStmtReader::NumExprFields] & ((1 << 14) - 1),
3965-
/*HasTemplateKWAndArgsInfo=*/
3966-
(Record[ASTStmtReader::NumExprFields] >> 14) & (0x1),
3967-
/*NumTemplateArgs=*/Record[ASTStmtReader::NumExprFields] >> 14 &
3968-
((1 << 14) - 1));
3951+
/*NumResults=*/Record[ASTStmtReader::NumExprFields],
3952+
/*HasTemplateKWAndArgsInfo=*/Record[ASTStmtReader::NumExprFields + 1],
3953+
/*NumTemplateArgs=*/
3954+
Record[ASTStmtReader::NumExprFields + 1]
3955+
? Record[ASTStmtReader::NumExprFields + 2]
3956+
: 0);
39693957
break;
39703958

39713959
case EXPR_CXX_UNRESOLVED_LOOKUP:
39723960
S = UnresolvedLookupExpr::CreateEmpty(
39733961
Context,
3974-
/*NumResults=*/Record[ASTStmtReader::NumExprFields] & ((1 << 14) - 1),
3975-
/*HasTemplateKWAndArgsInfo=*/
3976-
(Record[ASTStmtReader::NumExprFields] >> 14) & (0x1),
3977-
/*NumTemplateArgs=*/Record[ASTStmtReader::NumExprFields] >> 14 &
3978-
((1 << 14) - 1));
3962+
/*NumResults=*/Record[ASTStmtReader::NumExprFields],
3963+
/*HasTemplateKWAndArgsInfo=*/Record[ASTStmtReader::NumExprFields + 1],
3964+
/*NumTemplateArgs=*/
3965+
Record[ASTStmtReader::NumExprFields + 1]
3966+
? Record[ASTStmtReader::NumExprFields + 2]
3967+
: 0);
39793968
break;
39803969

39813970
case EXPR_TYPE_TRAIT:
@@ -4037,9 +4026,8 @@ Stmt *ASTReader::ReadStmtFromStream(ModuleFile &F) {
40374026

40384027
case EXPR_CUDA_KERNEL_CALL:
40394028
S = CUDAKernelCallExpr::CreateEmpty(
4040-
Context, /*NumArgs=*/Record[ASTStmtReader::NumExprFields] & 0xffff,
4041-
/*HasFPFeatures=*/
4042-
((Record[ASTStmtReader::NumExprFields] >> 16) & 0x1), Empty);
4029+
Context, /*NumArgs=*/Record[ASTStmtReader::NumExprFields],
4030+
/*HasFPFeatures=*/Record[ASTStmtReader::NumExprFields + 1], Empty);
40434031
break;
40444032

40454033
case EXPR_ASTYPE:

0 commit comments

Comments
 (0)