@@ -300,7 +300,10 @@ class accessor : public simsycl::detail::property_interface {
300300
301301 void swap (accessor &other) { return std::swap (*this , other); }
302302
303- bool is_placeholder () const { return !m_required; }
303+ bool is_placeholder () const {
304+ SIMSYCL_CHECK (m_required != nullptr );
305+ return !*m_required;
306+ }
304307
305308 size_type byte_size () const noexcept {
306309 SIMSYCL_CHECK (m_buffer != nullptr );
@@ -334,6 +337,7 @@ class accessor : public simsycl::detail::property_interface {
334337 requires (AccessMode != access_mode::atomic)
335338 {
336339 SIMSYCL_CHECK (m_buffer != nullptr );
340+ SIMSYCL_CHECK (m_required != nullptr );
337341 SIMSYCL_CHECK (*m_required);
338342 return m_buffer->data [detail::get_linear_index (m_buffer->range , index)];
339343 }
@@ -352,6 +356,7 @@ class accessor : public simsycl::detail::property_interface {
352356 requires(AccessTarget == target::device)
353357 {
354358 SIMSYCL_CHECK (m_buffer != nullptr );
359+ SIMSYCL_CHECK (m_required != nullptr );
355360 SIMSYCL_CHECK (*m_required);
356361 return m_buffer->data ;
357362 }
@@ -360,6 +365,7 @@ class accessor : public simsycl::detail::property_interface {
360365 requires(AccessTarget == target::host_task)
361366 {
362367 SIMSYCL_CHECK (m_buffer != nullptr );
368+ SIMSYCL_CHECK (m_required != nullptr );
363369 SIMSYCL_CHECK (*m_required);
364370 return m_buffer->data ;
365371 }
@@ -369,6 +375,7 @@ class accessor : public simsycl::detail::property_interface {
369375 requires(AccessTarget == target::device)
370376 {
371377 SIMSYCL_CHECK (m_buffer != nullptr );
378+ SIMSYCL_CHECK (m_required != nullptr );
372379 SIMSYCL_CHECK (*m_required);
373380 return accessor_ptr<IsDecorated>(m_buffer->data );
374381 }
@@ -433,6 +440,7 @@ class accessor : public simsycl::detail::property_interface {
433440 void require () {
434441 SIMSYCL_CHECK (m_buffer != nullptr );
435442 SIMSYCL_CHECK (m_guard != nullptr );
443+ SIMSYCL_CHECK (m_required != nullptr );
436444 m_guard->check_access_from_command_group ({m_access_offset, m_access_range, AccessMode});
437445 *m_required = true ;
438446 }
@@ -537,7 +545,10 @@ class accessor<DataT, 0, AccessMode, AccessTarget, IsPlaceholder> : public simsy
537545
538546 void swap (accessor &other) { return std::swap (*this , other); }
539547
540- bool is_placeholder () const { return !m_required; }
548+ bool is_placeholder () const {
549+ SIMSYCL_CHECK (m_required != nullptr );
550+ return !*m_required;
551+ }
541552
542553 size_type byte_size () const noexcept { return sizeof (DataT); }
543554
@@ -555,6 +566,7 @@ class accessor<DataT, 0, AccessMode, AccessTarget, IsPlaceholder> : public simsy
555566 requires(AccessMode != access_mode::atomic)
556567 {
557568 SIMSYCL_CHECK (m_buffer != nullptr );
569+ SIMSYCL_CHECK (m_required != nullptr );
558570 SIMSYCL_CHECK (*m_required);
559571 return *m_buffer->data ;
560572 }
@@ -563,6 +575,7 @@ class accessor<DataT, 0, AccessMode, AccessTarget, IsPlaceholder> : public simsy
563575 requires (AccessMode != access_mode::atomic && AccessMode != access_mode::read)
564576 {
565577 SIMSYCL_CHECK (m_buffer != nullptr );
578+ SIMSYCL_CHECK (m_required != nullptr );
566579 SIMSYCL_CHECK (*m_required);
567580 *m_buffer->data = other;
568581 return *this ;
@@ -572,6 +585,7 @@ class accessor<DataT, 0, AccessMode, AccessTarget, IsPlaceholder> : public simsy
572585 requires (AccessMode != access_mode::atomic && AccessMode != access_mode::read)
573586 {
574587 SIMSYCL_CHECK (m_buffer != nullptr );
588+ SIMSYCL_CHECK (m_required != nullptr );
575589 SIMSYCL_CHECK (*m_required);
576590 *m_buffer->data = std::move (other);
577591 return *this ;
@@ -584,6 +598,7 @@ class accessor<DataT, 0, AccessMode, AccessTarget, IsPlaceholder> : public simsy
584598 requires(AccessTarget == target::device)
585599 {
586600 SIMSYCL_CHECK (m_buffer != nullptr );
601+ SIMSYCL_CHECK (m_required != nullptr );
587602 SIMSYCL_CHECK (*m_required);
588603 return m_buffer->data ;
589604 }
@@ -592,6 +607,7 @@ class accessor<DataT, 0, AccessMode, AccessTarget, IsPlaceholder> : public simsy
592607 requires(AccessTarget == target::host_task)
593608 {
594609 SIMSYCL_CHECK (m_buffer != nullptr );
610+ SIMSYCL_CHECK (m_required != nullptr );
595611 SIMSYCL_CHECK (*m_required);
596612 return m_buffer->data ;
597613 }
@@ -601,6 +617,7 @@ class accessor<DataT, 0, AccessMode, AccessTarget, IsPlaceholder> : public simsy
601617 requires(AccessTarget == target::device)
602618 {
603619 SIMSYCL_CHECK (m_buffer != nullptr );
620+ SIMSYCL_CHECK (m_required != nullptr );
604621 SIMSYCL_CHECK (*m_required);
605622 return accessor_ptr<IsDecorated>(m_buffer->data );
606623 }
@@ -636,6 +653,7 @@ class accessor<DataT, 0, AccessMode, AccessTarget, IsPlaceholder> : public simsy
636653 void require () {
637654 SIMSYCL_CHECK (m_buffer != nullptr );
638655 SIMSYCL_CHECK (m_guard != nullptr );
656+ SIMSYCL_CHECK (m_required != nullptr );
639657 m_guard->check_access_from_command_group ({0 , 1 , AccessMode});
640658 *m_required = true ;
641659 }
@@ -1142,7 +1160,10 @@ class accessor<DataT, Dimensions, AccessMode, target::constant_buffer, IsPlaceho
11421160
11431161 friend bool operator ==(const accessor &lhs, const accessor &rhs) = default ;
11441162
1145- bool is_placeholder () const { return !*m_required; }
1163+ bool is_placeholder () const {
1164+ SIMSYCL_CHECK (m_required != nullptr );
1165+ return !*m_required;
1166+ }
11461167
11471168 size_t get_size () const noexcept { return get_count () * sizeof (DataT); }
11481169
@@ -1220,6 +1241,7 @@ class accessor<DataT, Dimensions, AccessMode, target::constant_buffer, IsPlaceho
12201241 void require () {
12211242 SIMSYCL_CHECK (m_buffer != nullptr );
12221243 SIMSYCL_CHECK (m_guard != nullptr );
1244+ SIMSYCL_CHECK (m_required != nullptr );
12231245 m_guard->check_access_from_command_group ({m_access_offset, m_access_range, AccessMode});
12241246 *m_required = true ;
12251247 }
@@ -1255,20 +1277,25 @@ class accessor<DataT, 0, AccessMode, target::constant_buffer, IsPlaceholder> fin
12551277
12561278 friend bool operator ==(const accessor &lhs, const accessor &rhs) = default;
12571279
1258- bool is_placeholder () const { return !m_required; }
1280+ bool is_placeholder () const {
1281+ SIMSYCL_CHECK (m_required != nullptr );
1282+ return !*m_required;
1283+ }
12591284
12601285 size_t get_size () const noexcept { return sizeof (DataT); }
12611286
12621287 size_t get_count () const noexcept { return 1 ; }
12631288
12641289 operator reference () const {
12651290 SIMSYCL_CHECK (m_buffer != nullptr );
1291+ SIMSYCL_CHECK (m_required != nullptr );
12661292 SIMSYCL_CHECK (*m_required);
12671293 return *m_buffer->data ;
12681294 }
12691295
12701296 global_ptr<DataT> get_pointer () const noexcept {
12711297 SIMSYCL_CHECK (m_buffer != nullptr );
1298+ SIMSYCL_CHECK (m_required != nullptr );
12721299 SIMSYCL_CHECK (*m_required);
12731300 return m_buffer->data ;
12741301 }
@@ -1287,6 +1314,7 @@ class accessor<DataT, 0, AccessMode, target::constant_buffer, IsPlaceholder> fin
12871314 void require () {
12881315 SIMSYCL_CHECK (m_buffer != nullptr );
12891316 SIMSYCL_CHECK (m_guard != nullptr );
1317+ SIMSYCL_CHECK (m_required != nullptr );
12901318 m_guard->check_access_from_command_group ({0 , 1 , AccessMode});
12911319 *m_required = true ;
12921320 }
0 commit comments