Skip to content

Commit 372cc94

Browse files
authored
[SYCL] Adjust accessor for gdb pretty-printer (#6644)
GDB cannot parse template parameters correctly if there are forward declarations of a type without template parametrs given. The patch adds names to all forward declarations of accessor and improves the test so it should catch this problem if it appears again.
1 parent 1b17d17 commit 372cc94

File tree

4 files changed

+27
-9
lines changed

4 files changed

+27
-9
lines changed

sycl/include/sycl/accessor.hpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -932,8 +932,9 @@ class __SYCL_SPECIAL_CLASS accessor :
932932

933933
ConcreteASPtrType getQualifiedPtr() const { return MData; }
934934

935-
template <typename, int, access::mode, access::target, access::placeholder,
936-
typename>
935+
template <typename DataT_, int Dimensions_, access::mode AccessMode_,
936+
access::target AccessTarget_, access::placeholder IsPlaceholder_,
937+
typename PropertyListT_>
937938
friend class accessor;
938939

939940
#ifndef __SYCL_DEVICE_ONLY__

sycl/include/sycl/detail/accessor_impl.hpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@
1717

1818
namespace sycl {
1919
__SYCL_INLINE_VER_NAMESPACE(_V1) {
20-
template <typename, int, access::mode, access::target, access::placeholder,
21-
typename>
20+
template <typename DataT, int Dimensions, access::mode AccessMode,
21+
access::target AccessTarget, access::placeholder IsPlaceholder,
22+
typename PropertyListT>
2223
class accessor;
2324

2425
namespace ext {
@@ -171,8 +172,9 @@ class AccessorBaseHost {
171172
template <class Obj>
172173
friend decltype(Obj::impl) getSyclObjImpl(const Obj &SyclObject);
173174

174-
template <typename, int, access::mode, access::target, access::placeholder,
175-
typename>
175+
template <typename DataT, int Dimensions, access::mode AccessMode,
176+
access::target AccessTarget, access::placeholder IsPlaceholder,
177+
typename PropertyListT>
176178
friend class accessor;
177179

178180
AccessorImplPtr impl;

sycl/include/sycl/ext/oneapi/accessor_property_list.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
namespace sycl {
1717
__SYCL_INLINE_VER_NAMESPACE(_V1) {
1818
// Forward declaration
19-
template <typename, int, access::mode, access::target, access::placeholder,
19+
template <typename DataT, int Dimensions, access::mode AccessMode,
20+
access::target AccessTarget, access::placeholder IsPlaceholder,
2021
typename PropertyListT>
2122
class accessor;
2223
namespace detail {

sycl/test/gdb/accessors.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
// RUN: %clangxx -c -fno-color-diagnostics -std=c++17 -I %sycl_include/sycl -I %sycl_include -Xclang -ast-dump %s | FileCheck %s
2+
// RUN: %clangxx -c -fno-color-diagnostics -std=c++17 -I %sycl_include/sycl -I %sycl_include -Xclang -emit-llvm -g %s -o - | FileCheck %s --check-prefixes CHECK-DEBUG-INFO
23
// UNSUPPORTED: windows
3-
#include <sycl/accessor.hpp>
4+
#include <sycl/sycl.hpp>
45

5-
typedef sycl::accessor<int, 1, sycl::access::mode::read> dummy;
6+
void foo(sycl::buffer<int, 1> &BufA) {
7+
auto HostAcc = BufA.get_access<sycl::access_mode::read>();
8+
}
69

710
// AccessorImplHost must have MMemoryRange, MOffset and MData fields
811

@@ -31,3 +34,14 @@ typedef sycl::accessor<int, 1, sycl::access::mode::read> dummy;
3134
// CHECK: CXXRecordDecl {{.*}} class accessor definition
3235
// CHECK-NOT: CXXRecordDecl {{.*}} definition
3336
// CHECK: public {{.*}}:'sycl::detail::AccessorBaseHost'
37+
38+
39+
// CHECK-DEBUG-INFO: !DICompositeType(tag: DW_TAG_class_type, name: "accessor<int, 1, (sycl::_V1::access::mode)1024, (sycl::_V1::access::target)2018, (sycl::_V1::access::placeholder)0, sycl::_V1::ext::oneapi::accessor_property_list<> >", {{.*}}, templateParams: ![[TEMPL_METADATA:[0-9]+]]
40+
// CHECK-DEBUG-INFO: ![[TEMPL_METADATA]] = !{![[DATA_T:[0-9]+]], ![[Dims:[0-9]+]], ![[AccMode:[0-9]+]], ![[AccTarget:[0-9]+]], ![[IsPlh:[0-9]+]], ![[PropListT:[0-9]+]]}
41+
// CHECK-DEBUG-INFO-NEXT: ![[DATA_T]] = !DITemplateTypeParameter(name: "DataT"
42+
// CHECK-DEBUG-INFO-NEXT: ![[Dims]] = !DITemplateValueParameter(name: "Dimensions"
43+
// CHECK-DEBUG-INFO-NEXT: ![[AccMode]] = !DITemplateValueParameter(name: "AccessMode"
44+
// CHECK-DEBUG-INFO-NEXT: ![[AccTarget]] = !DITemplateValueParameter(name: "AccessTarget"
45+
// CHECK-DEBUG-INFO-NEXT: ![[IsPlh]] = !DITemplateValueParameter(name: "IsPlaceholder"
46+
// CHECK-DEBUG-INFO-NEXT: ![[PropListT]] = !DITemplateTypeParameter(name: "PropertyListT"
47+
// CHECK-NOT: !DICompositeType(tag: DW_TAG_class_type, name: "accessor<i

0 commit comments

Comments
 (0)