@@ -820,13 +820,16 @@ static void VisitRecordHelper(CXXRecordDecl *Owner,
820
820
for (const auto &Base : Range) {
821
821
(void )std::initializer_list<int >{(handlers.enterField (Owner, Base), 0 )...};
822
822
QualType BaseTy = Base.getType ();
823
+ // Handle accessor class as base
823
824
if (Util::isSyclAccessorType (BaseTy)) {
824
825
(void )std::initializer_list<int >{
825
826
(handlers.handleSyclAccessorType (Base, BaseTy), 0 )...};
826
827
} else if (Util::isSyclStreamType (BaseTy)) {
828
+ // Handle stream class as base
827
829
(void )std::initializer_list<int >{
828
830
(handlers.handleSyclStreamType (Base, BaseTy), 0 )...};
829
831
} else
832
+ // For all other bases, visit the record
830
833
VisitRecord (Owner, Base, BaseTy->getAsCXXRecordDecl (), handlers...);
831
834
(void )std::initializer_list<int >{(handlers.leaveField (Owner, Base), 0 )...};
832
835
}
@@ -1287,7 +1290,6 @@ class SyclKernelBodyCreator
1287
1290
llvm::SmallVector<Expr *, 16 > MemberExprBases;
1288
1291
uint64_t ArrayIndex;
1289
1292
FunctionDecl *KernelCallerFunc;
1290
- bool ArrayState;
1291
1293
1292
1294
// Using the statements/init expressions that we've created, this generates
1293
1295
// the kernel body compound stmt. CompoundStmt needs to know its number of
@@ -1505,8 +1507,7 @@ class SyclKernelBodyCreator
1505
1507
KernelObjClone (createKernelObjClone(S.getASTContext(),
1506
1508
DC.getKernelDecl(), KernelObj)),
1507
1509
VarEntity(InitializedEntity::InitializeVariable(KernelObjClone)),
1508
- KernelObj(KernelObj), KernelCallerFunc(KernelCallerFunc),
1509
- ArrayState(false ) {
1510
+ KernelObj(KernelObj), KernelCallerFunc(KernelCallerFunc) {
1510
1511
markParallelWorkItemCalls ();
1511
1512
1512
1513
Stmt *DS = new (S.Context ) DeclStmt (DeclGroupRef (KernelObjClone),
@@ -1615,6 +1616,7 @@ class SyclKernelBodyCreator
1615
1616
if (!Util::isSyclStreamType (FD->getType ()))
1616
1617
addStructInit (RD);
1617
1618
// Pop out unused initializers created in handleSyclAccesorType
1619
+ // for accessors inside stream class.
1618
1620
else {
1619
1621
for (const auto &Field : RD->fields ()) {
1620
1622
QualType FieldTy = Field->getType ();
0 commit comments