@@ -94,7 +94,8 @@ bool SemaSYCL::isSyclType(QualType Ty, SYCLTypeAttr::SYCLType TypeName) {
9494
9595static bool isSyclAccessorType (QualType Ty) {
9696 return SemaSYCL::isSyclType (Ty, SYCLTypeAttr::accessor) ||
97- SemaSYCL::isSyclType (Ty, SYCLTypeAttr::local_accessor);
97+ SemaSYCL::isSyclType (Ty, SYCLTypeAttr::local_accessor) ||
98+ SemaSYCL::isSyclType (Ty, SYCLTypeAttr::dynamic_local_accessor);
9899}
99100
100101// FIXME: Accessor property lists should be modified to use compile-time
@@ -1152,7 +1153,8 @@ static QualType GetSYCLKernelObjectType(const FunctionDecl *KernelCaller) {
11521153// / \return the target of given SYCL accessor type
11531154static target getAccessTarget (QualType FieldTy,
11541155 const ClassTemplateSpecializationDecl *AccTy) {
1155- if (SemaSYCL::isSyclType (FieldTy, SYCLTypeAttr::local_accessor))
1156+ if (SemaSYCL::isSyclType (FieldTy, SYCLTypeAttr::local_accessor) ||
1157+ SemaSYCL::isSyclType (FieldTy, SYCLTypeAttr::dynamic_local_accessor))
11561158 return local;
11571159
11581160 return static_cast <target>(
@@ -4815,7 +4817,15 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler {
48154817 int Dims = static_cast <int >(
48164818 AccTy->getTemplateArgs ()[1 ].getAsIntegral ().getExtValue ());
48174819 int Info = getAccessTarget (FieldTy, AccTy) | (Dims << 11 );
4818- Header.addParamDesc (SYCLIntegrationHeader::kind_accessor, Info,
4820+
4821+ SYCLIntegrationHeader::kernel_param_kind_t ParamKind =
4822+ SYCLIntegrationHeader::kind_accessor;
4823+
4824+ if (SemaSYCL::isSyclType (FieldTy, SYCLTypeAttr::dynamic_local_accessor)) {
4825+ ParamKind = SYCLIntegrationHeader::kind_dynamic_accessor;
4826+ }
4827+
4828+ Header.addParamDesc (ParamKind, Info,
48194829 CurOffset +
48204830 offsetOf (RD, BC.getType ()->getAsCXXRecordDecl ()));
48214831 } else if (SemaSYCL::isSyclType (FieldTy, SYCLTypeAttr::work_group_memory)) {
@@ -4841,8 +4851,14 @@ class SyclKernelIntHeaderCreator : public SyclKernelFieldHandler {
48414851 AccTy->getTemplateArgs ()[1 ].getAsIntegral ().getExtValue ());
48424852 int Info = getAccessTarget (FieldTy, AccTy) | (Dims << 11 );
48434853
4844- Header.addParamDesc (SYCLIntegrationHeader::kind_accessor, Info,
4845- CurOffset + offsetOf (FD, FieldTy));
4854+ SYCLIntegrationHeader::kernel_param_kind_t ParamKind =
4855+ SYCLIntegrationHeader::kind_accessor;
4856+
4857+ if (SemaSYCL::isSyclType (FieldTy, SYCLTypeAttr::dynamic_local_accessor)) {
4858+ ParamKind = SYCLIntegrationHeader::kind_dynamic_accessor;
4859+ }
4860+
4861+ Header.addParamDesc (ParamKind, Info, CurOffset + offsetOf (FD, FieldTy));
48464862 } else if (SemaSYCL::isSyclType (FieldTy, SYCLTypeAttr::stream)) {
48474863 addParam (FD, FieldTy, SYCLIntegrationHeader::kind_stream);
48484864 } else if (SemaSYCL::isSyclType (FieldTy, SYCLTypeAttr::work_group_memory)) {
@@ -6025,6 +6041,7 @@ static const char *paramKind2Str(KernelParamKind K) {
60256041 CASE (pointer);
60266042 CASE (work_group_memory);
60276043 CASE (dynamic_work_group_memory);
6044+ CASE (dynamic_accessor);
60286045 }
60296046 return " <ERROR>" ;
60306047
0 commit comments