<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/test/Transforms/RewriteStatepointsForGC/base-pointers.ll, 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>True fixpoint algorithm in RS4GC (#75826)</title>
<updated>2024-01-22T14:10:04+00:00</updated>
<author>
<name>Petr Maj</name>
<email>53400784+zduka@users.noreply.github.com</email>
</author>
<published>2024-01-22T14:10:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3c246efd04210af56ab6ce960b98283ec5bc7c30'/>
<id>3c246efd04210af56ab6ce960b98283ec5bc7c30</id>
<content type='text'>
Fixes a problem where the explicit marking of various instructions as
conflicts did not propagate to their users. An example of this:

```
%getelementptr = getelementptr i8, &lt;2 x ptr addrspace(1)&gt; zeroinitializer, &lt;2 x i64&gt; &lt;i64 888, i64 908&gt;
%shufflevector = shufflevector &lt;2 x ptr addrspace(1)&gt; %getelementptr, &lt;2 x ptr addrspace(1)&gt; zeroinitializer, &lt;4 x i32&gt; &lt;i32 0, i32 1, i32 2, i32 3&gt;
%shufflevector1 = shufflevector &lt;2 x ptr addrspace(1)&gt; %getelementptr, &lt;2 x ptr addrspace(1)&gt; zeroinitializer, &lt;4 x i32&gt; &lt;i32 0, i32 1, i32 2, i32 3&gt;
%select = select i1 false, &lt;4 x ptr addrspace(1)&gt; %shufflevector1, &lt;4 x ptr addrspace(1)&gt; %shufflevector
```

Here the vector shuffles will get single base (gep) during the fixpoint
and therefore the select will get a known base (gep). We later mark the
shuffles as conflicts, but this does not change the base of select. This
gets caught by an assert where the select's type will differ from its
(wrong) base later on.

The solution in the MR is to move the explicit conflict marking into the
fixpoint phase.

---------

Co-authored-by: Petr Maj &lt;pmaj@azul.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes a problem where the explicit marking of various instructions as
conflicts did not propagate to their users. An example of this:

```
%getelementptr = getelementptr i8, &lt;2 x ptr addrspace(1)&gt; zeroinitializer, &lt;2 x i64&gt; &lt;i64 888, i64 908&gt;
%shufflevector = shufflevector &lt;2 x ptr addrspace(1)&gt; %getelementptr, &lt;2 x ptr addrspace(1)&gt; zeroinitializer, &lt;4 x i32&gt; &lt;i32 0, i32 1, i32 2, i32 3&gt;
%shufflevector1 = shufflevector &lt;2 x ptr addrspace(1)&gt; %getelementptr, &lt;2 x ptr addrspace(1)&gt; zeroinitializer, &lt;4 x i32&gt; &lt;i32 0, i32 1, i32 2, i32 3&gt;
%select = select i1 false, &lt;4 x ptr addrspace(1)&gt; %shufflevector1, &lt;4 x ptr addrspace(1)&gt; %shufflevector
```

Here the vector shuffles will get single base (gep) during the fixpoint
and therefore the select will get a known base (gep). We later mark the
shuffles as conflicts, but this does not change the base of select. This
gets caught by an assert where the select's type will differ from its
(wrong) base later on.

The solution in the MR is to move the explicit conflict marking into the
fixpoint phase.

---------

Co-authored-by: Petr Maj &lt;pmaj@azul.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[RewriteStatepointsForGC] Avoid branch on undef UB in tests (NFC)</title>
<updated>2023-01-03T13:31:33+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2023-01-03T13:28:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=20fa198687800fafc4f9fd53683cefc150d79a13'/>
<id>20fa198687800fafc4f9fd53683cefc150d79a13</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[RewriteStatepointsForGC] Convert some tests to opaque pointers (NFC)</title>
<updated>2023-01-03T13:27:26+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2023-01-03T13:24:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f01a3a893c147c1594b9a3fbd817456b209dabbf'/>
<id>f01a3a893c147c1594b9a3fbd817456b209dabbf</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[test] Remove duplicate RUN lines in Transform tests</title>
<updated>2022-12-08T10:47:16+00:00</updated>
<author>
<name>Bjorn Pettersson</name>
<email>bjorn.a.pettersson@ericsson.com</email>
</author>
<published>2022-12-08T10:28:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3528e63d89305907b3d6e0f59f7b03b94a12dacc'/>
<id>3528e63d89305907b3d6e0f59f7b03b94a12dacc</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC] Port all RewriteStatepointsForGC tests to `-passes=` syntax</title>
<updated>2022-12-07T19:22:08+00:00</updated>
<author>
<name>Roman Lebedev</name>
<email>lebedev.ri@gmail.com</email>
</author>
<published>2022-12-07T19:01:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=dcd5f6f2fda25bb85f3179bdaa566f66840bb469'/>
<id>dcd5f6f2fda25bb85f3179bdaa566f66840bb469</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[IRBuilder][RS4GC] Require FunctionCallee when creating statepoint</title>
<updated>2022-02-04T08:47:32+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2022-02-03T10:29:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c680eeab30d61a34467c06bc83b93f33a9598f9f'/>
<id>c680eeab30d61a34467c06bc83b93f33a9598f9f</id>
<content type='text'>
This makes the statepoint methods in IRBuilder accept a
FunctionCallee, which carries both the callee and function type.
This is used to add the elementtype attribute to the statepoint call.

RS4GC requires an additional tweak to actually preserve that attribute
-- previously the attributes on the call were completely overwritten.

Differential Revision: https://reviews.llvm.org/D118886
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This makes the statepoint methods in IRBuilder accept a
FunctionCallee, which carries both the callee and function type.
This is used to add the elementtype attribute to the statepoint call.

RS4GC requires an additional tweak to actually preserve that attribute
-- previously the attributes on the call were completely overwritten.

Differential Revision: https://reviews.llvm.org/D118886
</pre>
</div>
</content>
</entry>
<entry>
<title>[rs4gc] don't duplicate existing values which are provably base pointers</title>
<updated>2021-03-16T19:51:21+00:00</updated>
<author>
<name>Philip Reames</name>
<email>listmail@philipreames.com</email>
</author>
<published>2021-03-16T19:47:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5cabf472cb3c434bbf03889623c09b14f5c62f26'/>
<id>5cabf472cb3c434bbf03889623c09b14f5c62f26</id>
<content type='text'>
RS4GC needs to rewrite the IR to ensure that every relocated pointer has an associated base pointer. The existing code isn't particularly smart about avoiding duplication of existing IR when it turns out the original pointer we were asked to materialize a base pointer for is itself a base pointer.

This patch adds a stage to the algorithm which prunes nodes proven (with a simple forward dataflow fixed point) to be base pointers from the list of nodes considered for duplication. This does require changing some of the later invariants slightly, that's probably the riskiest part of the change.

Differential Revision: D98122
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
RS4GC needs to rewrite the IR to ensure that every relocated pointer has an associated base pointer. The existing code isn't particularly smart about avoiding duplication of existing IR when it turns out the original pointer we were asked to materialize a base pointer for is itself a base pointer.

This patch adds a stage to the algorithm which prunes nodes proven (with a simple forward dataflow fixed point) to be base pointers from the list of nodes considered for duplication. This does require changing some of the later invariants slightly, that's probably the riskiest part of the change.

Differential Revision: D98122
</pre>
</div>
</content>
</entry>
<entry>
<title>[rs4gc] autogen a bunch of tests for ease of update</title>
<updated>2021-03-06T17:04:00+00:00</updated>
<author>
<name>Philip Reames</name>
<email>listmail@philipreames.com</email>
</author>
<published>2021-03-06T17:04:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c6ec563f029f905d47ff6b663dd40c2e055cf31c'/>
<id>c6ec563f029f905d47ff6b663dd40c2e055cf31c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[rs4gc] avoid insert base computation instructions for deopt uses</title>
<updated>2021-03-05T17:55:36+00:00</updated>
<author>
<name>Philip Reames</name>
<email>listmail@philipreames.com</email>
</author>
<published>2021-03-05T17:55:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=99f93dd3a502568441da3db04ddf0655a2e38c24'/>
<id>99f93dd3a502568441da3db04ddf0655a2e38c24</id>
<content type='text'>
If we have a value live over a call which is used for deopt at the call, we know that the value must be a base pointer. We can avoid potentially inserting IR to materialize a base for this value.

In it's current form, this is mostly a compile time optimization.   Building the base pointer graph (and then optimizing it away again) is a relatively expensive operation.  We also sometimes end up with better codegen in practice - due to failures in optimizing away the inserted base pointer propogation - but those are optimization bugs we're fixing concurrently.

The alternative to this would be to extend the base pointer inference with the ability to generally reuse multiple-base input instructions (phis and selects).  That's somewhat invasive and complicated, so we're defering it a bit longer.

Differential Revision: https://reviews.llvm.org/D97885
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If we have a value live over a call which is used for deopt at the call, we know that the value must be a base pointer. We can avoid potentially inserting IR to materialize a base for this value.

In it's current form, this is mostly a compile time optimization.   Building the base pointer graph (and then optimizing it away again) is a relatively expensive operation.  We also sometimes end up with better codegen in practice - due to failures in optimizing away the inserted base pointer propogation - but those are optimization bugs we're fixing concurrently.

The alternative to this would be to extend the base pointer inference with the ability to generally reuse multiple-base input instructions (phis and selects).  That's somewhat invasive and complicated, so we're defering it a bit longer.

Differential Revision: https://reviews.llvm.org/D97885
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "Temporarily Revert "Add basic loop fusion pass.""</title>
<updated>2019-04-17T04:52:47+00:00</updated>
<author>
<name>Eric Christopher</name>
<email>echristo@gmail.com</email>
</author>
<published>2019-04-17T04:52:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=cee313d288a4faf0355d76fb6e0e927e211d08a5'/>
<id>cee313d288a4faf0355d76fb6e0e927e211d08a5</id>
<content type='text'>
The reversion apparently deleted the test/Transforms directory.

Will be re-reverting again.

llvm-svn: 358552
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The reversion apparently deleted the test/Transforms directory.

Will be re-reverting again.

llvm-svn: 358552
</pre>
</div>
</content>
</entry>
</feed>
