<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Analysis/MemorySSAUpdater.cpp, branch users/meinersbur/flang_runtime_split-headers</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>[MemorySSA] Handle MemoryDef optimized away during cloning (#117883)</title>
<updated>2024-12-09T11:21:49+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2024-12-09T11:21:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=46e04f7fe5c0f01ba452489bb966bdf2d560a63d'/>
<id>46e04f7fe5c0f01ba452489bb966bdf2d560a63d</id>
<content type='text'>
When determining the replacement access during cloning, we currently
leave accesses for instructions that are not in the VMap alone. This is
correct if the instruction is not in VMap because it hasn't been cloned,
but not if it has been cloned and then removed. In that case, we should
walk up to the defining access, like in other simplification cases.

To distinguish the two cases, pass in a callback that queries whether
the instruction is part of the cloned region.

An alternative to this would be to delay removal of dead instructions in
SimpleLoopUnswitch until after MSSA cloning.

Fixes https://github.com/llvm/llvm-project/issues/116228.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When determining the replacement access during cloning, we currently
leave accesses for instructions that are not in the VMap alone. This is
correct if the instruction is not in VMap because it hasn't been cloned,
but not if it has been cloned and then removed. In that case, we should
walk up to the defining access, like in other simplification cases.

To distinguish the two cases, pass in a callback that queries whether
the instruction is part of the cloned region.

An alternative to this would be to delay removal of dead instructions in
SimpleLoopUnswitch until after MSSA cloning.

Fixes https://github.com/llvm/llvm-project/issues/116228.</pre>
</div>
</content>
</entry>
<entry>
<title>[LICM] allow MemoryAccess creation failure (#116813)</title>
<updated>2024-11-20T11:52:51+00:00</updated>
<author>
<name>DianQK</name>
<email>dianqk@dianqk.net</email>
</author>
<published>2024-11-20T11:52:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=18b02bbf441660683df7f3925946984203d49bab'/>
<id>18b02bbf441660683df7f3925946984203d49bab</id>
<content type='text'>
Fixes #116809.

After running some passes (SimpleLoopUnswitch, LoopInstSimplify, etc.),
MemorySSA might be outdated, and the instruction `I` may have become a
non-memory touching instruction.

LICM has already handled this, but it does not pass
`CreationMustSucceed=false` to `createDefinedAccess`.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes #116809.

After running some passes (SimpleLoopUnswitch, LoopInstSimplify, etc.),
MemorySSA might be outdated, and the instruction `I` may have become a
non-memory touching instruction.

LICM has already handled this, but it does not pass
`CreationMustSucceed=false` to `createDefinedAccess`.</pre>
</div>
</content>
</entry>
<entry>
<title>[MSSAUpdater] Handle simplified accesses when updating phis (#78272)</title>
<updated>2024-01-24T09:15:42+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2024-01-24T09:15:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a7a1b8b17e264fb0f2d2b4165cf9a7f5094b08b3'/>
<id>a7a1b8b17e264fb0f2d2b4165cf9a7f5094b08b3</id>
<content type='text'>
This is a followup to #76819. After those changes, we can still run into
an assertion failure for a slight variation of the test case: When
fixing up MemoryPhis, we map the incoming access to the access of the
cloned instruction -- which may now no longer exist.

Fix this by reusing the getNewDefiningAccessForClone() helper, which
will look upwards for a new defining access in that case.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a followup to #76819. After those changes, we can still run into
an assertion failure for a slight variation of the test case: When
fixing up MemoryPhis, we map the incoming access to the access of the
cloned instruction -- which may now no longer exist.

Fix this by reusing the getNewDefiningAccessForClone() helper, which
will look upwards for a new defining access in that case.</pre>
</div>
</content>
</entry>
<entry>
<title>[MSSA] Don't require clone creation to succeed (#76819)</title>
<updated>2024-01-08T09:21:25+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2024-01-08T09:21:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d02c7931d1be794a230943e300fec4172032e6a8'/>
<id>d02c7931d1be794a230943e300fec4172032e6a8</id>
<content type='text'>
Sometimes, we create a MemoryAccess for an instruction, which is later
simplified (e.g. via devirtualization) such that the new instruction has
no memory effects anymore.

If we later clone the instruction (e.g. during unswitching), then MSSA
will not create a MemoryAccess for the new instruction, triggering an
assert.

Disable the assertion (by passing CreationMustSucceed=false) and adjust
getDefiningAccessForClone() to work correctly in that case.

This PR implements the alternative suggestion by alinas from
https://github.com/llvm/llvm-project/pull/76142.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Sometimes, we create a MemoryAccess for an instruction, which is later
simplified (e.g. via devirtualization) such that the new instruction has
no memory effects anymore.

If we later clone the instruction (e.g. during unswitching), then MSSA
will not create a MemoryAccess for the new instruction, triggering an
assert.

Disable the assertion (by passing CreationMustSucceed=false) and adjust
getDefiningAccessForClone() to work correctly in that case.

This PR implements the alternative suggestion by alinas from
https://github.com/llvm/llvm-project/pull/76142.</pre>
</div>
</content>
</entry>
<entry>
<title>[Analysis] Qualify auto variables in for loops (NFC)</title>
<updated>2022-07-17T06:26:34+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2022-07-17T06:26:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=601b3a13dea746e2b1e683bbbece41ae9de76c2b'/>
<id>601b3a13dea746e2b1e683bbbece41ae9de76c2b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix MemorySSAUpdater::insertDef for dead code</title>
<updated>2022-03-31T23:32:35+00:00</updated>
<author>
<name>Artur Pilipenko</name>
<email>apilipenko@azul.com</email>
</author>
<published>2022-03-31T23:30:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4fbde1ef40e6fa550b428b20a085a90d1fdfb071'/>
<id>4fbde1ef40e6fa550b428b20a085a90d1fdfb071</id>
<content type='text'>
Fix for https://github.com/llvm/llvm-project/issues/51257.

Differential Revision: https://reviews.llvm.org/D122601
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix for https://github.com/llvm/llvm-project/issues/51257.

Differential Revision: https://reviews.llvm.org/D122601
</pre>
</div>
</content>
</entry>
<entry>
<title>Cleanup includes: LLVMAnalysis</title>
<updated>2022-03-01T17:01:54+00:00</updated>
<author>
<name>serge-sans-paille</name>
<email>sguelton@redhat.com</email>
</author>
<published>2022-02-28T13:08:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=71c3a5519dbcd609fb64560ac7fdfe8db149b905'/>
<id>71c3a5519dbcd609fb64560ac7fdfe8db149b905</id>
<content type='text'>
Number of lines output by preprocessor:
before: 1065940348
after:  1065307662

Discourse thread: https://discourse.llvm.org/t/include-what-you-use-include-cleanup
Differential Revision: https://reviews.llvm.org/D120659
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Number of lines output by preprocessor:
before: 1065940348
after:  1065307662

Discourse thread: https://discourse.llvm.org/t/include-what-you-use-include-cleanup
Differential Revision: https://reviews.llvm.org/D120659
</pre>
</div>
</content>
</entry>
<entry>
<title>[MemorySSA] Clear VisitedBlocks per query</title>
<updated>2022-02-18T20:36:19+00:00</updated>
<author>
<name>Whitney Tsang</name>
<email>whitneyt@ca.ibm.com</email>
</author>
<published>2022-02-18T20:34:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e7afbea8ca4e1c8239614aa37c2bd975172ddfa6'/>
<id>e7afbea8ca4e1c8239614aa37c2bd975172ddfa6</id>
<content type='text'>
The problem can be shown from the newly added test case.
There are two invocations to MemorySSAUpdater::moveToPlace, and the
internal data structure VisitedBlocks is changed in the first
invocation, and reused in the second invocation. In between the two
invocations, there is a change to the CFG, and MemorySSAUpdater is
notified about the change.

Reviewed By: asbirlea

Differential Revision: https://reviews.llvm.org/D119898
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The problem can be shown from the newly added test case.
There are two invocations to MemorySSAUpdater::moveToPlace, and the
internal data structure VisitedBlocks is changed in the first
invocation, and reused in the second invocation. In between the two
invocations, there is a change to the CFG, and MemorySSAUpdater is
notified about the change.

Reviewed By: asbirlea

Differential Revision: https://reviews.llvm.org/D119898
</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm] Use range-based for loops (NFC)</title>
<updated>2021-11-18T17:09:52+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2021-11-18T17:09:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7ca14f6044bfa46efdbb4d4080e36c3265a09a78'/>
<id>7ca14f6044bfa46efdbb4d4080e36c3265a09a78</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm] Use make_early_inc_range (NFC)</title>
<updated>2021-11-06T02:39:07+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2021-11-06T02:39:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=87e53a0ad8557162bc074e982df914beb9afa84d'/>
<id>87e53a0ad8557162bc074e982df914beb9afa84d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
