<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Analysis/CFG.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>[llvm] Ensure newline at the end of files (NFC) (#143061)</title>
<updated>2025-06-06T05:58:15+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2025-06-06T05:58:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=445974547d3fae74ea1cb89f4c2b428491cab468'/>
<id>445974547d3fae74ea1cb89f4c2b428491cab468</id>
<content type='text'>
Without newlines at the end, git diff would display:

  No newline at end of file</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Without newlines at the end, git diff would display:

  No newline at end of file</pre>
</div>
</content>
</entry>
<entry>
<title>[nfc] move `isPresplitCoroSuspendExitEdge` to Analysis/CFG (#135849)</title>
<updated>2025-04-15T22:07:03+00:00</updated>
<author>
<name>Mircea Trofin</name>
<email>mtrofin@google.com</email>
</author>
<published>2025-04-15T22:07:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a6208ce4c15142c26c6b73651bf466ae6b470cb0'/>
<id>a6208ce4c15142c26c6b73651bf466ae6b470cb0</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[nfc] Expose `canReturn` from FunctionAttrs (#135650)</title>
<updated>2025-04-15T20:55:40+00:00</updated>
<author>
<name>Mircea Trofin</name>
<email>mtrofin@google.com</email>
</author>
<published>2025-04-15T20:55:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f83c5fe01fbee0f53ecf69d887e7a7b054f2a9ae'/>
<id>f83c5fe01fbee0f53ecf69d887e7a7b054f2a9ae</id>
<content type='text'>
This is a fairly light-weight traversal and is needed in instrumentation. No need to run the whole `FunctionAttrs` pass at this stage. To avoid layering issues, this patch factors `canRun` and related under Analysis/CFG.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a fairly light-weight traversal and is needed in instrumentation. No need to run the whole `FunctionAttrs` pass at this stage. To avoid layering issues, this patch factors `canRun` and related under Analysis/CFG.</pre>
</div>
</content>
</entry>
<entry>
<title>Reapply "[coro][CoroSplit] Use `llvm.lifetime.end` to compute putting objects on the frame vs the stack (#90265) (#91372)</title>
<updated>2024-05-21T16:48:03+00:00</updated>
<author>
<name>Alan Zhao</name>
<email>ayzhao@google.com</email>
</author>
<published>2024-05-21T16:48:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0c8bc08868e7bf051e9683851726747def85765a'/>
<id>0c8bc08868e7bf051e9683851726747def85765a</id>
<content type='text'>
This reverts commit 924384161ffceda08099536dd07a953299a69b53.

This reland addresses the performance regressions seen in #90265 by
retaining the original definition of
`isPotentiallyReachableFromMany(...)` instead of reimplementing it with
`isManyPotentiallyReachableFromMany(...)`.

Fixes #86580</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 924384161ffceda08099536dd07a953299a69b53.

This reland addresses the performance regressions seen in #90265 by
retaining the original definition of
`isPotentiallyReachableFromMany(...)` instead of reimplementing it with
`isManyPotentiallyReachableFromMany(...)`.

Fixes #86580</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[coro][CoroSplit] Use `llvm.lifetime.end` to compute putting objects on the frame vs the stack (#90265)"</title>
<updated>2024-05-07T00:41:25+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2024-05-07T00:41:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=924384161ffceda08099536dd07a953299a69b53'/>
<id>924384161ffceda08099536dd07a953299a69b53</id>
<content type='text'>
This reverts commit fcf341d3ddfe2289ac88aa3c122b25df8732cc8e.

Causes major compile-time regressions when not using coroutines.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit fcf341d3ddfe2289ac88aa3c122b25df8732cc8e.

Causes major compile-time regressions when not using coroutines.
</pre>
</div>
</content>
</entry>
<entry>
<title>[coro][CoroSplit] Use `llvm.lifetime.end` to compute putting objects on the frame vs the stack (#90265)</title>
<updated>2024-05-06T20:43:52+00:00</updated>
<author>
<name>Alan Zhao</name>
<email>ayzhao@google.com</email>
</author>
<published>2024-05-06T20:43:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=fcf341d3ddfe2289ac88aa3c122b25df8732cc8e'/>
<id>fcf341d3ddfe2289ac88aa3c122b25df8732cc8e</id>
<content type='text'>
The current logic for using lifetime intrinsics to determine whether a
coroutine alloca should live on the coroutine frame or stack doesn't
consider `llvm.lifetime.end`. As a result, some allocas are incorrectly
placed on the stack even though their lifetimes may outlive the stack.
For example, SimplifyCFG may generate code that drops the corresponding
`llvm.lifetime.end` of an `llvm.lifetime.start`, and that code is
incorrectly handled by the existing logic.

To fix this, new logic is introduced where if an alloca's address is
escaped, and there is a path from an `llvm.lifetime.start` to a
coroutine suspend point (e.g. `llvm.coro.suspend`) without an
`llvm.lifetime.end`, then we know the object lives beyond the suspension
point and therefore must go on the coroutine frame.

Fixes https://github.com/llvm/llvm-project/issues/86580</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The current logic for using lifetime intrinsics to determine whether a
coroutine alloca should live on the coroutine frame or stack doesn't
consider `llvm.lifetime.end`. As a result, some allocas are incorrectly
placed on the stack even though their lifetimes may outlive the stack.
For example, SimplifyCFG may generate code that drops the corresponding
`llvm.lifetime.end` of an `llvm.lifetime.start`, and that code is
incorrectly handled by the existing logic.

To fix this, new logic is introduced where if an alloca's address is
escaped, and there is a path from an `llvm.lifetime.start` to a
coroutine suspend point (e.g. `llvm.coro.suspend`) without an
`llvm.lifetime.end`, then we know the object lives beyond the suspension
point and therefore must go on the coroutine frame.

Fixes https://github.com/llvm/llvm-project/issues/86580</pre>
</div>
</content>
</entry>
<entry>
<title>[CFG] Add const qualifier to isPotentiallyReachableFromMany() (NFC)</title>
<updated>2022-10-18T08:06:07+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>npopov@redhat.com</email>
</author>
<published>2022-10-18T08:05:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e162a73e41402feab4b3870cc7074f053099da64'/>
<id>e162a73e41402feab4b3870cc7074f053099da64</id>
<content type='text'>
Accept a const pointer for StopBB. Unfortunately the worklist has
to use non-const pointers due to LoopInfo interaction.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Accept a const pointer for StopBB. Unfortunately the worklist has
to use non-const pointers due to LoopInfo interaction.
</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>[LoopInfo] Add getOutermostLoop() (NFC)</title>
<updated>2022-06-10T09:48:21+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>nikita.ppv@gmail.com</email>
</author>
<published>2021-04-10T17:26:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d77f944832ae6fcb33397072c717c7971df6d3ee'/>
<id>d77f944832ae6fcb33397072c717c7971df6d3ee</id>
<content type='text'>
This is a recurring pattern, add an API function for it.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a recurring pattern, add an API function for it.
</pre>
</div>
</content>
</entry>
<entry>
<title>[CFG] Move reachable from entry checks into basic block variant</title>
<updated>2021-05-15T13:42:02+00:00</updated>
<author>
<name>Nikita Popov</name>
<email>nikita.ppv@gmail.com</email>
</author>
<published>2021-05-15T11:05:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f9e9b0cdb4f499aa8443c21430fdb09a5a74490f'/>
<id>f9e9b0cdb4f499aa8443c21430fdb09a5a74490f</id>
<content type='text'>
These checks are not specific to the instruction based variant of
isPotentiallyReachable(), they are equally valid for the basic
block based variant. Move them there, to make sure that switching
between the instruction and basic block variants cannot introduce
regressions.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These checks are not specific to the instruction based variant of
isPotentiallyReachable(), they are equally valid for the basic
block based variant. Move them there, to make sure that switching
between the instruction and basic block variants cannot introduce
regressions.
</pre>
</div>
</content>
</entry>
</feed>
