Skip to content

Commit 0e0984e

Browse files
ianaylCopilot
andauthored
[GDB] Fix pretty-printer crash for sycl::item MOffset (#19683)
The pretty printer looks for an `MOffset` field in `sycl::item` impl without considering whether or not offset has been enabled (Offset was deprecated in SYCL 2020): Add a check to avoid printing `MOffset` if offset has been disabled. --------- Co-authored-by: Copilot <[email protected]>
1 parent 9f516d6 commit 0e0984e

File tree

2 files changed

+37
-4
lines changed

2 files changed

+37
-4
lines changed

sycl/gdb/libsycl.so-gdb.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1074,10 +1074,13 @@ def to_string(self):
10741074
string = self.type_name(self.gdb_type())
10751075
extent = SYCLRangePrinter(sycl_item.extent()).value_as_string()
10761076
string += " range " + extent
1077-
offset_id = SYCLItem(self.gdb_value()).offset()
1078-
offset = SYCLIdPrinter(offset_id).value_as_string()
1079-
if offset not in ["0", "{0, 0}", "{0, 0, 0}"]:
1080-
string += ", offset " + offset
1077+
try:
1078+
offset_id = SYCLItem(self.gdb_value()).offset()
1079+
offset = SYCLIdPrinter(offset_id).value_as_string()
1080+
if offset not in ["0", "{0, 0}", "{0, 0, 0}"]:
1081+
string += ", offset " + offset
1082+
except Exception:
1083+
pass # device offset disabled
10811084
string += " = " + self.value_as_string()
10821085
return string
10831086

sycl/test/gdb/printers.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include "detail/accessor_impl.hpp"
2525
#include "detail/buffer_impl.hpp"
2626
#include "detail/device_impl.hpp"
27+
#include "detail/helpers.hpp"
2728
#include "detail/queue_impl.hpp"
2829
#include "detail/sycl_mem_obj_t.hpp"
2930

@@ -34,6 +35,11 @@ sycl::local_accessor<int> l;
3435
sycl::queue q;
3536
sycl::range<1> r(3);
3637

38+
sycl::item<1, true> item_w_offset =
39+
sycl::detail::Builder::createItem<1, true>({4}, {2}, {1});
40+
sycl::item<2, false> item_wo_offset =
41+
sycl::detail::Builder::createItem<2, false>({4, 4}, {2, 2});
42+
3743
// CHECK: 0 | class sycl::range<>
3844
// CHECK: 0 | size_t[1] common_array
3945

@@ -93,3 +99,27 @@ sycl::range<1> r(3);
9399
// DEVICE: 8 | class sycl::range<> MemRange
94100
// DEVICE: 8 | size_t[1] common_array
95101
// DEVICE: 24 | ConcreteASPtrType MData
102+
103+
// CHECK: 0 | class sycl::item<1, true>
104+
// CHECK: 0 | struct sycl::detail::ItemBase<1, true> MImpl
105+
// CHECK: 0 | class sycl::range<> MExtent
106+
// CHECK: 0 | class sycl::detail::array<> (base)
107+
// CHECK: 0 | size_t[1] common_array
108+
// CHECK: 8 | class sycl::id<1> MIndex
109+
// CHECK: 8 | class sycl::detail::array<> (base)
110+
// CHECK: 8 | size_t[1] common_array
111+
// CHECK: 16 | class sycl::id<1> MOffset
112+
// CHECK: 16 | class sycl::detail::array<> (base)
113+
// CHECK: 16 | size_t[1] common_array
114+
115+
// CHECK: 0 | class sycl::item<2, false>
116+
// CHECK: 0 | struct sycl::detail::ItemBase<2, false> MImpl
117+
// CHECK: 0 | class sycl::range<2> MExtent
118+
// CHECK: 0 | class sycl::detail::array<2> (base)
119+
// CHECK: 0 | size_t[2] common_array
120+
// CHECK: 16 | class sycl::id<2> MIndex
121+
// CHECK: 16 | class sycl::detail::array<2> (base)
122+
// CHECK: 16 | size_t[2] common_array
123+
// CHECK-NOT: 32 | class sycl::id<2> MOffset
124+
// CHECK-NOT: 32 | class sycl::detail::array<2> (base)
125+
// CHECK-NOT: 32 | size_t[2] common_array

0 commit comments

Comments
 (0)