<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/utils/lldbDataFormatters.py, branch users/nico/python-2</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>[llvm][utils] Add synthetic provider for llvm::DenseSet (#143631)</title>
<updated>2025-06-12T17:13:30+00:00</updated>
<author>
<name>Dave Lee</name>
<email>davelee.com@gmail.com</email>
</author>
<published>2025-06-12T17:13:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=cbc2ef0e890e6c700023fe00c7166554f2f5ad14'/>
<id>cbc2ef0e890e6c700023fe00c7166554f2f5ad14</id>
<content type='text'>
Add a synthetic child provider for `DenseSet`, which is a wrapper around
`DenseMap`. This provider leverages the existing `DenseMap` provider,
reshaping its dictionary structured children into a set.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add a synthetic child provider for `DenseSet`, which is a wrapper around
`DenseMap`. This provider leverages the existing `DenseMap` provider,
reshaping its dictionary structured children into a set.</pre>
</div>
</content>
</entry>
<entry>
<title>Remove debugger pretty printers for llvm::Optional (#135235)</title>
<updated>2025-04-14T12:11:55+00:00</updated>
<author>
<name>Aaron Puchert</name>
<email>aaron.puchert@sap.com</email>
</author>
<published>2025-04-14T12:11:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=1c04ebbbb5aff6da50aa62f08b2453e741484b85'/>
<id>1c04ebbbb5aff6da50aa62f08b2453e741484b85</id>
<content type='text'>
Since 2916b99182752b1aece8cc4479d8d6a20b5e02da this is just an alias to
std::optional, and by now it has been removed entirely.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since 2916b99182752b1aece8cc4479d8d6a20b5e02da this is just an alias to
std::optional, and by now it has been removed entirely.</pre>
</div>
</content>
</entry>
<entry>
<title>[lldb] Add synthetic formatter for llvm::Expected (#118758)</title>
<updated>2024-12-06T03:31:20+00:00</updated>
<author>
<name>Dave Lee</name>
<email>davelee.com@gmail.com</email>
</author>
<published>2024-12-06T03:31:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=398f3b368af9bced530e65c02bb38136d7f69caf'/>
<id>398f3b368af9bced530e65c02bb38136d7f69caf</id>
<content type='text'>
Adds a synthetic formatter for `llvm::Expected&lt;T&gt;`. The synthetic value
will have a single child, either `value` or `error`.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adds a synthetic formatter for `llvm::Expected&lt;T&gt;`. The synthetic value
will have a single child, either `value` or `error`.</pre>
</div>
</content>
</entry>
<entry>
<title>Make lldbDataFormatters.py compatible with Python 3.8 (#82518)</title>
<updated>2024-02-21T19:53:01+00:00</updated>
<author>
<name>Alexander Richardson</name>
<email>alexrichardson@google.com</email>
</author>
<published>2024-02-21T19:53:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=db9811cd131d66c1c3dff0222fc8bcc83a555846'/>
<id>db9811cd131d66c1c3dff0222fc8bcc83a555846</id>
<content type='text'>
I just tried to load this into LLDB built against Python 3.8.5 and got
the following error: `TypeError: 'type' object is not subscriptable`. I
could fix this by wrapping the annotations in quotes but since Python
3.7 this syntax can be enabled with `from __future__ import
annotations`.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I just tried to load this into LLDB built against Python 3.8.5 and got
the following error: `TypeError: 'type' object is not subscriptable`. I
could fix this by wrapping the annotations in quotes but since Python
3.7 this syntax can be enabled with `from __future__ import
annotations`.</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm][utils] Fix SmallString summary provider (#78527)</title>
<updated>2024-01-18T18:35:18+00:00</updated>
<author>
<name>Dave Lee</name>
<email>davelee.com@gmail.com</email>
</author>
<published>2024-01-18T18:35:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=45d1cca3394fa4b14561dd6c36104ff8e20e51db'/>
<id>45d1cca3394fa4b14561dd6c36104ff8e20e51db</id>
<content type='text'>
Fixes `SmallString` summary provider, which was incorrectly producing the empty string. 
Initially I thought the strings I was debugging were empty for unknown reasons, but 
that was not the case.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes `SmallString` summary provider, which was incorrectly producing the empty string. 
Initially I thought the strings I was debugging were empty for unknown reasons, but 
that was not the case.
</pre>
</div>
</content>
</entry>
<entry>
<title>[lldb] Allow lldbDataFormatters.py to be used by other names (NFC) (#65528)</title>
<updated>2023-09-06T20:39:45+00:00</updated>
<author>
<name>Dave Lee</name>
<email>davelee.com@gmail.com</email>
</author>
<published>2023-09-06T20:39:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a4b82f7f9b8e586f599877f37461da95b790bc98'/>
<id>a4b82f7f9b8e586f599877f37461da95b790bc98</id>
<content type='text'>
Instead of hard-coding the name `lldbDataFormatters`, use `__name__` to
get the module's name.

This allows the formatters to be loaded from any path, with any
filename.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Instead of hard-coding the name `lldbDataFormatters`, use `__name__` to
get the module's name.

This allows the formatters to be loaded from any path, with any
filename.</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm][utils] Fix SmallVector formatter when type is a pointer</title>
<updated>2023-08-15T22:09:59+00:00</updated>
<author>
<name>Michael Buch</name>
<email>michaelbuch12@gmail.com</email>
</author>
<published>2023-08-15T10:40:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=bb90a5cf204119c87452f1d98338b3768fedb184'/>
<id>bb90a5cf204119c87452f1d98338b3768fedb184</id>
<content type='text'>
Previously types such as `SmallVector&lt;clang::Attr, 4&gt; *` would
trigger the assertion inside the `SmallVector` formatter:
```
assert self.type_size != 0
```
This happens because `the_type.GetTemplateArgumentType(0)` returns
`None` (since `the_type` is a pointer to the `SmallVector`).

This patch dereferences `the_type` if it's a pointer type. We do this
for references already.

Differential Revision: https://reviews.llvm.org/D157961
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously types such as `SmallVector&lt;clang::Attr, 4&gt; *` would
trigger the assertion inside the `SmallVector` formatter:
```
assert self.type_size != 0
```
This happens because `the_type.GetTemplateArgumentType(0)` returns
`None` (since `the_type` is a pointer to the `SmallVector`).

This patch dereferences `the_type` if it's a pointer type. We do this
for references already.

Differential Revision: https://reviews.llvm.org/D157961
</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm][utils] Use literal type name for non-template data formatters (NFC)</title>
<updated>2023-07-21T02:33:47+00:00</updated>
<author>
<name>Dave Lee</name>
<email>davelee.com@gmail.com</email>
</author>
<published>2023-07-11T18:24:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b8580ef717af1e85734d163f99d62c3b7c6711ad'/>
<id>b8580ef717af1e85734d163f99d62c3b7c6711ad</id>
<content type='text'>
These don't need to be regex.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These don't need to be regex.
</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm][utils] Add DenseMap data formatters</title>
<updated>2023-07-19T20:21:49+00:00</updated>
<author>
<name>Dave Lee</name>
<email>davelee.com@gmail.com</email>
</author>
<published>2022-10-29T22:07:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=78c9122ac9ad5562d65852eb38322f131cffbfd6'/>
<id>78c9122ac9ad5562d65852eb38322f131cffbfd6</id>
<content type='text'>
Add summary and synthetic data formatters for `llvm::DenseMap`.

This implementation avoids expression evaluation by using a heuristic. However, as
heuristics go, there is a corner case: A single deleted entry (a single "tombstone"),
will result in a child value with an invalid key but a valid value.

Instead of calling `getEmptyKey()` and `getTombstoneKey()` to determine which buckets
are empty, and which contain real key-values, the heuristic scans all buckets to
identify keys that exist only once. These singleton keys are considered valid.

The empty key will always exist multiple times. However the tombstone key may exist
zero, one, or many times. The heuristic has no problems when there are zero or many
tombstones, but when there is exactly one deleted entry (one tombstone), then the
heuristic will incorrectly identify it as valid.

Differential Revision: https://reviews.llvm.org/D137028
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add summary and synthetic data formatters for `llvm::DenseMap`.

This implementation avoids expression evaluation by using a heuristic. However, as
heuristics go, there is a corner case: A single deleted entry (a single "tombstone"),
will result in a child value with an invalid key but a valid value.

Instead of calling `getEmptyKey()` and `getTombstoneKey()` to determine which buckets
are empty, and which contain real key-values, the heuristic scans all buckets to
identify keys that exist only once. These singleton keys are considered valid.

The empty key will always exist multiple times. However the tombstone key may exist
zero, one, or many times. The heuristic has no problems when there are zero or many
tombstones, but when there is exactly one deleted entry (one tombstone), then the
heuristic will incorrectly identify it as valid.

Differential Revision: https://reviews.llvm.org/D137028
</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm][utils] Disable lldb formatters for PointerIntPair and PointerUnion</title>
<updated>2023-07-13T22:51:25+00:00</updated>
<author>
<name>Dave Lee</name>
<email>davelee.com@gmail.com</email>
</author>
<published>2023-07-13T17:00:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f0acfaf9241899552eca6baf3db1cebd1d6f2034'/>
<id>f0acfaf9241899552eca6baf3db1cebd1d6f2034</id>
<content type='text'>
These synthetic providers use expression evaluation and fail in some cases.

Examples:

```
llvm::PointerIntPair&lt;llvm::PointerUnion&lt;const Type *, const ExtQuals *&gt;,
                     Qualifiers::FastWidth&gt; Value;
```

and

```
typedef llvm::PointerUnion&lt;const ValueDecl *, const Expr *, TypeInfoLValue,
                           DynamicAllocLValue&gt;
        PtrTy;
```

Original contribution: D117779

rdar://110791233
rdar://112195543

Differential Revision: https://reviews.llvm.org/D155219
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These synthetic providers use expression evaluation and fail in some cases.

Examples:

```
llvm::PointerIntPair&lt;llvm::PointerUnion&lt;const Type *, const ExtQuals *&gt;,
                     Qualifiers::FastWidth&gt; Value;
```

and

```
typedef llvm::PointerUnion&lt;const ValueDecl *, const Expr *, TypeInfoLValue,
                           DynamicAllocLValue&gt;
        PtrTy;
```

Original contribution: D117779

rdar://110791233
rdar://112195543

Differential Revision: https://reviews.llvm.org/D155219
</pre>
</div>
</content>
</entry>
</feed>
