<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp, branch main</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>[NFC][DebugInfo] Switch more call-sites to using iterator-insertion (#124283)</title>
<updated>2025-01-27T16:44:14+00:00</updated>
<author>
<name>Jeremy Morse</name>
<email>jeremy.morse@sony.com</email>
</author>
<published>2025-01-27T16:44:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=34b139594aa20fe712bc2ad68544632b3e4d8512'/>
<id>34b139594aa20fe712bc2ad68544632b3e4d8512</id>
<content type='text'>
To finalise the "RemoveDIs" work removing debug intrinsics, we're
updating call sites that insert instructions to use iterators instead.
This set of changes are those where it's not immediately obvious that
just calling getIterator to fetch an iterator is correct, and one or two
places where more than one line needs to change.

Overall the same rule holds though: iterators generated for the start of
a block such as getFirstNonPHIIt need to be passed into insert/move
methods without being unwrapped/rewrapped, everything else can use
getIterator.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
To finalise the "RemoveDIs" work removing debug intrinsics, we're
updating call sites that insert instructions to use iterators instead.
This set of changes are those where it's not immediately obvious that
just calling getIterator to fetch an iterator is correct, and one or two
places where more than one line needs to change.

Overall the same rule holds though: iterators generated for the start of
a block such as getFirstNonPHIIt need to be passed into insert/move
methods without being unwrapped/rewrapped, everything else can use
getIterator.</pre>
</div>
</content>
</entry>
<entry>
<title>[MergedLoadStore] Preserve common metadata when sinking stores. (#116382)</title>
<updated>2024-11-15T20:52:02+00:00</updated>
<author>
<name>Florian Hahn</name>
<email>flo@fhahn.com</email>
</author>
<published>2024-11-15T20:52:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3734e4c0c4966f794b9588445448004fee769ab9'/>
<id>3734e4c0c4966f794b9588445448004fee769ab9</id>
<content type='text'>
When sinking a store, preserve common metadata present on stores on both
sides of the diamond.

PR: https://github.com/llvm/llvm-project/pull/116382</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When sinking a store, preserve common metadata present on stores on both
sides of the diamond.

PR: https://github.com/llvm/llvm-project/pull/116382</pre>
</div>
</content>
</entry>
<entry>
<title>[IR] Add getDataLayout() helpers to BasicBlock and Instruction (#96902)</title>
<updated>2024-06-27T14:38:15+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2024-06-27T14:38:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2d209d964a17687f70299d756a7b5e9fa342e0b4'/>
<id>2d209d964a17687f70299d756a7b5e9fa342e0b4</id>
<content type='text'>
This is a helper to avoid writing `getModule()-&gt;getDataLayout()`. I
regularly try to use this method only to remember it doesn't exist...

`getModule()-&gt;getDataLayout()` is also a common (the most common?)
reason why code has to include the Module.h header.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a helper to avoid writing `getModule()-&gt;getDataLayout()`. I
regularly try to use this method only to remember it doesn't exist...

`getModule()-&gt;getDataLayout()` is also a common (the most common?)
reason why code has to include the Module.h header.</pre>
</div>
</content>
</entry>
<entry>
<title>[NewPM] Remove MergedLoadStoreMotionLegacyPass (#72813)</title>
<updated>2023-11-20T09:00:24+00:00</updated>
<author>
<name>Aiden Grossman</name>
<email>agrossman154@yahoo.com</email>
</author>
<published>2023-11-20T09:00:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8319e222c89bf9a0df42a17df771645eaf4beb95'/>
<id>8319e222c89bf9a0df42a17df771645eaf4beb95</id>
<content type='text'>
This pass isn't used anywhere and thus isn't tested anywhere. Because of
these reasons, remove it.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This pass isn't used anywhere and thus isn't tested anywhere. Because of
these reasons, remove it.</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC][RemoveDIs] Prefer iterator-insertion over instructions</title>
<updated>2023-09-11T10:48:45+00:00</updated>
<author>
<name>Jeremy Morse</name>
<email>jeremy.morse@sony.com</email>
</author>
<published>2023-09-11T10:32:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6942c64e8128e4ccd891b813d0240f574f80f59e'/>
<id>6942c64e8128e4ccd891b813d0240f574f80f59e</id>
<content type='text'>
Continuing the patch series to get rid of debug intrinsics [0], instruction
insertion needs to be done with iterators rather than instruction pointers,
so that we can communicate information in the iterator class. This patch
adds an iterator-taking insertBefore method and converts various call sites
to take iterators. These are all sites where such debug-info needs to be
preserved so that a stage2 clang can be built identically; it's likely that
many more will need to be changed in the future.

At this stage, this is just changing the spelling of a few operations,
which will eventually become signifiant once the debug-info bearing
iterator is used.

[0] https://discourse.llvm.org/t/rfc-instruction-api-changes-needed-to-eliminate-debug-intrinsics-from-ir/68939

Differential Revision: https://reviews.llvm.org/D152537
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Continuing the patch series to get rid of debug intrinsics [0], instruction
insertion needs to be done with iterators rather than instruction pointers,
so that we can communicate information in the iterator class. This patch
adds an iterator-taking insertBefore method and converts various call sites
to take iterators. These are all sites where such debug-info needs to be
preserved so that a stage2 clang can be built identically; it's likely that
many more will need to be changed in the future.

At this stage, this is just changing the spelling of a few operations,
which will eventually become signifiant once the debug-info bearing
iterator is used.

[0] https://discourse.llvm.org/t/rfc-instruction-api-changes-needed-to-eliminate-debug-intrinsics-from-ir/68939

Differential Revision: https://reviews.llvm.org/D152537
</pre>
</div>
</content>
</entry>
<entry>
<title>[MergedLoadStoreMotion] Merge stores with conflicting value types</title>
<updated>2023-04-04T19:01:29+00:00</updated>
<author>
<name>Jeff Byrnes</name>
<email>jeffrey.byrnes@amd.com</email>
</author>
<published>2023-03-28T23:47:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9b79d0b610ccf5557266232d8c7a132ef9ee9365'/>
<id>9b79d0b610ccf5557266232d8c7a132ef9ee9365</id>
<content type='text'>
Since memory does not have an intrinsic type, we do not need to require value type matching on stores in order to sink them. To facilitate that, this patch finds stores which are sinkable, but have conflicting types, and bitcasts the ValueOperand so they are easily sinkable into a PHINode. Rather than doing fancy analysis to optimally insert the bitcast, we always insert right before the relevant store in the diamond branch. The assumption is that later passes (e.g. GVN, SimplifyCFG) will clean up bitcasts as needed.

Differential Revision: https://reviews.llvm.org/D147348
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since memory does not have an intrinsic type, we do not need to require value type matching on stores in order to sink them. To facilitate that, this patch finds stores which are sinkable, but have conflicting types, and bitcasts the ValueOperand so they are easily sinkable into a PHINode. Rather than doing fancy analysis to optimally insert the bitcast, we always insert right before the relevant store in the diamond branch. The assumption is that later passes (e.g. GVN, SimplifyCFG) will clean up bitcasts as needed.

Differential Revision: https://reviews.llvm.org/D147348
</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC] Use single quotes for single char output during `printPipline`</title>
<updated>2023-02-22T02:35:13+00:00</updated>
<author>
<name>Liren Peng</name>
<email>liren.plr@gmail.com</email>
</author>
<published>2023-02-22T02:30:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=529ee9750baf64662fd29e6ee4685df149a75cf9'/>
<id>529ee9750baf64662fd29e6ee4685df149a75cf9</id>
<content type='text'>
Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D144365
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D144365
</pre>
</div>
</content>
</entry>
<entry>
<title>Reapply [MergeLoadStoreMotion] Don't require GEP for sinking</title>
<updated>2022-12-27T11:49:30+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2022-12-27T11:17:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=cb03470aefb91dfd0d01f2651d604e9afaef5cb1'/>
<id>cb03470aefb91dfd0d01f2651d604e9afaef5cb1</id>
<content type='text'>
Reapply with a fix for a failing debuginfo assignment tracking test.

-----

Allow sinking stores where both operands are the same, don't require
them to have an identical GEP in each block.

This came up when migrating tests to opaque pointers, where
zero-index GEPs are omitted.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reapply with a fix for a failing debuginfo assignment tracking test.

-----

Allow sinking stores where both operands are the same, don't require
them to have an identical GEP in each block.

This came up when migrating tests to opaque pointers, where
zero-index GEPs are omitted.
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[MergeLoadStoreMotion] Don't require GEP for sinking"</title>
<updated>2022-12-27T11:38:04+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2022-12-27T11:37:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8bf311638704a9488d6a83d0ddbb23b4f4bb70f2'/>
<id>8bf311638704a9488d6a83d0ddbb23b4f4bb70f2</id>
<content type='text'>
I missed a test failure in the DebugInfo directory.

This reverts commit 2c15b9d9e1a898cfd849db81b36d278eac3ef24e.
This reverts commit fb435e1cb5842e1437436e9e7378dfc4106fdad8.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I missed a test failure in the DebugInfo directory.

This reverts commit 2c15b9d9e1a898cfd849db81b36d278eac3ef24e.
This reverts commit fb435e1cb5842e1437436e9e7378dfc4106fdad8.
</pre>
</div>
</content>
</entry>
<entry>
<title>[MergeLoadStoreMotion] Don't require GEP for sinking</title>
<updated>2022-12-27T11:17:58+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2022-12-27T11:17:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2c15b9d9e1a898cfd849db81b36d278eac3ef24e'/>
<id>2c15b9d9e1a898cfd849db81b36d278eac3ef24e</id>
<content type='text'>
Allow sinking stores where both operands are the same, don't require
them to have an identical GEP in each block.

This came up when migrating tests to opaque pointers, where
zero-index GEPs are omitted.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Allow sinking stores where both operands are the same, don't require
them to have an identical GEP in each block.

This came up when migrating tests to opaque pointers, where
zero-index GEPs are omitted.
</pre>
</div>
</content>
</entry>
</feed>
