@@ -108,7 +108,7 @@ namespace clang {
108
108
109
109
// / The number of record fields required for the Expr class
110
110
// / itself.
111
- static const unsigned NumExprFields = NumStmtFields + 2 ;
111
+ static const unsigned NumExprFields = NumStmtFields + 4 ;
112
112
113
113
// / Read and initialize a ExplicitTemplateArgumentList structure.
114
114
void ReadTemplateKWAndArgsInfo (ASTTemplateKWAndArgsInfo &Args,
@@ -524,13 +524,9 @@ void ASTStmtReader::VisitCapturedStmt(CapturedStmt *S) {
524
524
void ASTStmtReader::VisitExpr (Expr *E) {
525
525
VisitStmt (E);
526
526
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 ()));
534
530
assert (Record.getIdx () == NumExprFields &&
535
531
" Incorrect expression field count" );
536
532
}
@@ -999,19 +995,14 @@ void ASTStmtReader::VisitOMPIteratorExpr(OMPIteratorExpr *E) {
999
995
1000
996
void ASTStmtReader::VisitCallExpr (CallExpr *E) {
1001
997
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 ();
1009
1000
assert ((NumArgs == E->getNumArgs ()) && " Wrong NumArgs!" );
1010
1001
E->setRParenLoc (readSourceLocation ());
1011
1002
E->setCallee (Record.readSubExpr ());
1012
1003
for (unsigned I = 0 ; I != NumArgs; ++I)
1013
1004
E->setArg (I, Record.readSubExpr ());
1014
-
1005
+ E-> setADLCallKind ( static_cast <CallExpr::ADLCallKind>(Record. readInt ()));
1015
1006
if (HasFPFeatures)
1016
1007
E->setStoredFPFeatures (
1017
1008
FPOptionsOverride::getFromOpaqueInt (Record.readInt ()));
@@ -2022,15 +2013,14 @@ ASTStmtReader::VisitCXXUnresolvedConstructExpr(CXXUnresolvedConstructExpr *E) {
2022
2013
void ASTStmtReader::VisitOverloadExpr (OverloadExpr *E) {
2023
2014
VisitExpr (E);
2024
2015
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 ();
2028
2018
assert ((E->getNumDecls () == NumResults) && " Wrong NumResults!" );
2029
2019
assert ((E->hasTemplateKWAndArgsInfo () == HasTemplateKWAndArgsInfo) &&
2030
2020
" Wrong HasTemplateKWAndArgsInfo!" );
2031
2021
2032
2022
if (HasTemplateKWAndArgsInfo) {
2033
- unsigned NumTemplateArgs = OverloadExprBits. getNextBits ( /* Width= */ 14 );
2023
+ unsigned NumTemplateArgs = Record. readInt ( );
2034
2024
ReadTemplateKWAndArgsInfo (*E->getTrailingASTTemplateKWAndArgsInfo (),
2035
2025
E->getTrailingTemplateArgumentLoc (),
2036
2026
NumTemplateArgs);
@@ -3034,9 +3024,8 @@ Stmt *ASTReader::ReadStmtFromStream(ModuleFile &F) {
3034
3024
3035
3025
case EXPR_CALL:
3036
3026
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);
3040
3029
break ;
3041
3030
3042
3031
case EXPR_RECOVERY:
@@ -3777,16 +3766,14 @@ Stmt *ASTReader::ReadStmtFromStream(ModuleFile &F) {
3777
3766
3778
3767
case EXPR_CXX_OPERATOR_CALL:
3779
3768
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);
3783
3771
break ;
3784
3772
3785
3773
case EXPR_CXX_MEMBER_CALL:
3786
3774
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);
3790
3777
break ;
3791
3778
3792
3779
case EXPR_CXX_REWRITTEN_BINARY_OPERATOR:
@@ -3961,21 +3948,23 @@ Stmt *ASTReader::ReadStmtFromStream(ModuleFile &F) {
3961
3948
case EXPR_CXX_UNRESOLVED_MEMBER:
3962
3949
S = UnresolvedMemberExpr::CreateEmpty (
3963
3950
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 );
3969
3957
break ;
3970
3958
3971
3959
case EXPR_CXX_UNRESOLVED_LOOKUP:
3972
3960
S = UnresolvedLookupExpr::CreateEmpty (
3973
3961
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 );
3979
3968
break ;
3980
3969
3981
3970
case EXPR_TYPE_TRAIT:
@@ -4037,9 +4026,8 @@ Stmt *ASTReader::ReadStmtFromStream(ModuleFile &F) {
4037
4026
4038
4027
case EXPR_CUDA_KERNEL_CALL:
4039
4028
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);
4043
4031
break ;
4044
4032
4045
4033
case EXPR_ASTYPE:
0 commit comments