<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/clang/lib/AST/ByteCode/Context.cpp, branch users/ojhunt/ptrauth-additions</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>[clang][bytecode] Diagnose volatile writes (#160350)</title>
<updated>2025-09-28T05:21:40+00:00</updated>
<author>
<name>Timm Baeder</name>
<email>tbaeder@redhat.com</email>
</author>
<published>2025-09-28T05:21:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c7504872927486bb70c26aa71f795b1331cbbd38'/>
<id>c7504872927486bb70c26aa71f795b1331cbbd38</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[clang][bytecode] Use in `Expr::tryEvaluateString` (#160118)</title>
<updated>2025-09-25T05:50:38+00:00</updated>
<author>
<name>Timm Baeder</name>
<email>tbaeder@redhat.com</email>
</author>
<published>2025-09-25T05:50:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f9305c900ba23de7a9088ed00912cc6113eba506'/>
<id>f9305c900ba23de7a9088ed00912cc6113eba506</id>
<content type='text'>
Fixes #157492</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes #157492</pre>
</div>
</content>
</entry>
<entry>
<title>[z.OS] fix strnlen() usage in Context.cpp available on z/OS (#160339)</title>
<updated>2025-09-23T18:08:20+00:00</updated>
<author>
<name>Zibi Sarbinowski</name>
<email>zibi@ca.ibm.com</email>
</author>
<published>2025-09-23T18:08:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=55f230f74e1d8de93cac42b6f804ea5e34849e1b'/>
<id>55f230f74e1d8de93cac42b6f804ea5e34849e1b</id>
<content type='text'>
On z/OS `strnlen()` is not available by default so we use the wrapper
header `zOSSupport.h` to make it visible. This will fix the following
error:

```
clang/lib/AST/ByteCode/Context.cpp:250:16: error: use of undeclared identifier 'strnlen'
  250 |       Result = strnlen(reinterpret_cast&lt;const char *&gt;(Ptr.getRawAddress()), N);
      |                ^~~~~~~
1 error generated.
```</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
On z/OS `strnlen()` is not available by default so we use the wrapper
header `zOSSupport.h` to make it visible. This will fix the following
error:

```
clang/lib/AST/ByteCode/Context.cpp:250:16: error: use of undeclared identifier 'strnlen'
  250 |       Result = strnlen(reinterpret_cast&lt;const char *&gt;(Ptr.getRawAddress()), N);
      |                ^~~~~~~
1 error generated.
```</pre>
</div>
</content>
</entry>
<entry>
<title>[clang][bytecode] Fix unknown size arrays crash in clang bytecode (#160015)</title>
<updated>2025-09-23T13:12:36+00:00</updated>
<author>
<name>Osama Abdelkader</name>
<email>78818069+osamakader@users.noreply.github.com</email>
</author>
<published>2025-09-23T13:12:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=004e462682231548c9cf054be2341d3f5087ebbe'/>
<id>004e462682231548c9cf054be2341d3f5087ebbe</id>
<content type='text'>
Fixes #153948

Signed-off-by: Osama Abdelkader &lt;osama.abdelkader@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes #153948

Signed-off-by: Osama Abdelkader &lt;osama.abdelkader@gmail.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[clang][bytecode] Typecheck called function pointers more thorougly (#159757)</title>
<updated>2025-09-19T12:24:48+00:00</updated>
<author>
<name>Timm Baeder</name>
<email>tbaeder@redhat.com</email>
</author>
<published>2025-09-19T12:24:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=68c9ddb93022f46f49d8b1a6063065d3a15aba0f'/>
<id>68c9ddb93022f46f49d8b1a6063065d3a15aba0f</id>
<content type='text'>
Fix two older FIXME items from the `functions.cpp` test.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix two older FIXME items from the `functions.cpp` test.</pre>
</div>
</content>
</entry>
<entry>
<title>[clang][bytecode] Move generic lambda handling to Compiler (#159733)</title>
<updated>2025-09-19T10:51:02+00:00</updated>
<author>
<name>Timm Baeder</name>
<email>tbaeder@redhat.com</email>
</author>
<published>2025-09-19T10:51:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=03e16c8e42a03574062df1c5f2c9c5f2122042d5'/>
<id>03e16c8e42a03574062df1c5f2c9c5f2122042d5</id>
<content type='text'>
So the static invoker's Function still points to the static invoker
instead of the call operator of the lambda record. This is important for
a later commit.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
So the static invoker's Function still points to the static invoker
instead of the call operator of the lambda record. This is important for
a later commit.</pre>
</div>
</content>
</entry>
<entry>
<title>[clang][bytecode] Pass initializer along in `evaluateAsInitializer()` (#158056)</title>
<updated>2025-09-15T05:39:11+00:00</updated>
<author>
<name>Timm Baeder</name>
<email>tbaeder@redhat.com</email>
</author>
<published>2025-09-15T05:39:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=03c356c5544fad1890cc9abd0c1a9b7bab6f2a6b'/>
<id>03c356c5544fad1890cc9abd0c1a9b7bab6f2a6b</id>
<content type='text'>
We just called `getInit()`, which isn't always correct and used the
wrong initializer in the module test case.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We just called `getInit()`, which isn't always correct and used the
wrong initializer in the module test case.</pre>
</div>
</content>
</entry>
<entry>
<title>[clang][bytecode] Simplify and optimize EvaluationResult (#155772)</title>
<updated>2025-08-28T08:06:04+00:00</updated>
<author>
<name>Timm Baeder</name>
<email>tbaeder@redhat.com</email>
</author>
<published>2025-08-28T08:06:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=168308325d00b4de1c7a9c648d9f4f1f3e4c3866'/>
<id>168308325d00b4de1c7a9c648d9f4f1f3e4c3866</id>
<content type='text'>
Remove support for saving a `Pointer` in the `EvaluationResult` since
that was unused. Add `stealAPValue()` which moves the `APValue` out of
the `EvaluationResult` to avoid a copy at the end of the evaluation.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove support for saving a `Pointer` in the `EvaluationResult` since
that was unused. Add `stealAPValue()` which moves the `APValue` out of
the `EvaluationResult` to avoid a copy at the end of the evaluation.</pre>
</div>
</content>
</entry>
<entry>
<title>[clang] NFC: introduce Type::getAsEnumDecl, and cast variants for all TagDecls (#155463)</title>
<updated>2025-08-26T19:05:59+00:00</updated>
<author>
<name>Matheus Izvekov</name>
<email>mizvekov@gmail.com</email>
</author>
<published>2025-08-26T19:05:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2ec71d93ad888d9523425930ef8c35fe8f0b2485'/>
<id>2ec71d93ad888d9523425930ef8c35fe8f0b2485</id>
<content type='text'>
And make use of those.

These changes are split from prior PR #155028, in order to decrease the
size of that PR and facilitate review.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
And make use of those.

These changes are split from prior PR #155028, in order to decrease the
size of that PR and facilitate review.</pre>
</div>
</content>
</entry>
<entry>
<title>[clang][bytecode] Always track item types in InterpStack (#151088)</title>
<updated>2025-08-18T15:15:31+00:00</updated>
<author>
<name>Timm Baeder</name>
<email>tbaeder@redhat.com</email>
</author>
<published>2025-08-18T15:15:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6ce13ae1c20515e7c4554cde028e3a0990786075'/>
<id>6ce13ae1c20515e7c4554cde028e3a0990786075</id>
<content type='text'>
This has been a long-standing problem, but we didn't use to call the
destructors of items on the stack unless we explicitly `pop()` or
`discard()` them.

When interpretation was interrupted midway-through (because something
failed), we left `Pointer`s on the stack. Since all `Block`s track what
`Pointer`s point to them (via a doubly-linked list in the `Pointer`),
that meant we potentially leave deallocated pointers in that list. We
used to work around this by removing the `Pointer` from the list before
deallocating the block.

However, we now want to track pointers to global blocks as well, which
poses a problem since the blocks are never deallocated and thus those
pointers are always left dangling.

I've tried a few different approaches to fixing this but in the end I
just gave up on the idea of never knowing what items are in the stack.
We already have an `ItemTypes` vector that we use for debugging
assertions. This patch simply enables this vector unconditionally and
uses it in the abort case to properly `discard()` all elements from the
stack. That's a little sad IMO but I don't know of another way of
solving this problem.

As expected, this is a slight hit to compile times:
https://llvm-compile-time-tracker.com/compare.php?from=574d0a92060bf4808776b7a0239ffe91a092b15d&amp;to=0317105f559093cfb909bfb01857a6b837991940&amp;stat=instructions:u</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This has been a long-standing problem, but we didn't use to call the
destructors of items on the stack unless we explicitly `pop()` or
`discard()` them.

When interpretation was interrupted midway-through (because something
failed), we left `Pointer`s on the stack. Since all `Block`s track what
`Pointer`s point to them (via a doubly-linked list in the `Pointer`),
that meant we potentially leave deallocated pointers in that list. We
used to work around this by removing the `Pointer` from the list before
deallocating the block.

However, we now want to track pointers to global blocks as well, which
poses a problem since the blocks are never deallocated and thus those
pointers are always left dangling.

I've tried a few different approaches to fixing this but in the end I
just gave up on the idea of never knowing what items are in the stack.
We already have an `ItemTypes` vector that we use for debugging
assertions. This patch simply enables this vector unconditionally and
uses it in the abort case to properly `discard()` all elements from the
stack. That's a little sad IMO but I don't know of another way of
solving this problem.

As expected, this is a slight hit to compile times:
https://llvm-compile-time-tracker.com/compare.php?from=574d0a92060bf4808776b7a0239ffe91a092b15d&amp;to=0317105f559093cfb909bfb01857a6b837991940&amp;stat=instructions:u</pre>
</div>
</content>
</entry>
</feed>
