<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Analysis/InstructionPrecedenceTracking.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>[IPT] Remove ipt.NumInstScanned statistic (#168515)</title>
<updated>2025-11-19T16:14:50+00:00</updated>
<author>
<name>Luke Lau</name>
<email>luke@igalia.com</email>
</author>
<published>2025-11-19T16:14:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f3d8a5cf5bc058328004bd0905ab4974f09fc131'/>
<id>f3d8a5cf5bc058328004bd0905ab4974f09fc131</id>
<content type='text'>
The NumInstScanned statistic is non-determinstic across multiple
identical invocations of LLVM, and leads to noise when trying to diff
LLVM statistics with e.g. ./utils/tdiff.py in llvm-test-suite.

My understanding is that it's non-deterministic because the users of
IPT's hasSpecialInstructions/isPreceededBySpecialInstruction API aren't
deterministic themselves.

This PR removes it and fixes #157598. This is just a small
quality-of-life improvement for the ./utils/tdiff.py workflow, but happy
to leave the statistic in if others are using it.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The NumInstScanned statistic is non-determinstic across multiple
identical invocations of LLVM, and leads to noise when trying to diff
LLVM statistics with e.g. ./utils/tdiff.py in llvm-test-suite.

My understanding is that it's non-deterministic because the users of
IPT's hasSpecialInstructions/isPreceededBySpecialInstruction API aren't
deterministic themselves.

This PR removes it and fixes #157598. This is just a small
quality-of-life improvement for the ./utils/tdiff.py workflow, but happy
to leave the statistic in if others are using it.</pre>
</div>
</content>
</entry>
<entry>
<title>[Analysis] Avoid repeated hash lookups (NFC) (#132584)</title>
<updated>2025-03-23T14:36:19+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2025-03-23T14:36:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=ce2c4ea658239771dec542249a77dcf2056d8b8a'/>
<id>ce2c4ea658239771dec542249a77dcf2056d8b8a</id>
<content type='text'>
FirstSpecialInsts caches the first special instruction for each basic
block.  This patch "inlines" fill into getFirstSpecialInstruction, the
sole caller, to eliminate repeated hash lookups.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
FirstSpecialInsts caches the first special instruction for each basic
block.  This patch "inlines" fill into getFirstSpecialInstruction, the
sole caller, to eliminate repeated hash lookups.</pre>
</div>
</content>
</entry>
<entry>
<title>[Analysis] Avoid repeated hash lookups (NFC) (#123159)</title>
<updated>2025-01-16T16:45:27+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2025-01-16T16:45:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5fa989b034236ebf5a808dd47af50ab29d991a7d'/>
<id>5fa989b034236ebf5a808dd47af50ab29d991a7d</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 *{Map,Set}::contains (NFC)</title>
<updated>2023-03-16T01:06:32+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2023-03-16T01:06:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=398af9b43bbfbff291faac5bce524eca675d6caf'/>
<id>398af9b43bbfbff291faac5bce524eca675d6caf</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[Analysis] Use *{Set,Map}::contains (NFC)</title>
<updated>2023-03-14T07:32:40+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2023-03-14T07:32:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=11efd1cb04d0e9115d38f2138fa7fa455e281e09'/>
<id>11efd1cb04d0e9115d38f2138fa7fa455e281e09</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</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>Revert "[IPT] Restructure cache to allow lazy update following invalidation [NFC]"</title>
<updated>2021-10-21T17:48:41+00:00</updated>
<author>
<name>Arthur Eubanks</name>
<email>aeubanks@google.com</email>
</author>
<published>2021-10-21T17:48:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3781a46c3c70a83b2a5312aa358512578e87b9ca'/>
<id>3781a46c3c70a83b2a5312aa358512578e87b9ca</id>
<content type='text'>
This reverts commit baea663a6e9bc52f80995d02bb8149934c825612.

Causes crashes, e.g. https://lab.llvm.org/buildbot/#/builders/77/builds/10715.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit baea663a6e9bc52f80995d02bb8149934c825612.

Causes crashes, e.g. https://lab.llvm.org/buildbot/#/builders/77/builds/10715.
</pre>
</div>
</content>
</entry>
<entry>
<title>[IPT] Restructure cache to allow lazy update following invalidation [NFC]</title>
<updated>2021-10-21T16:16:21+00:00</updated>
<author>
<name>Philip Reames</name>
<email>listmail@philipreames.com</email>
</author>
<published>2021-10-21T16:15:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=baea663a6e9bc52f80995d02bb8149934c825612'/>
<id>baea663a6e9bc52f80995d02bb8149934c825612</id>
<content type='text'>
This change restructures the cache used in IPT to point not to the first special instruction, but to the first instruction which *could* be special. That is, the cached reference is always equal to the first special, or comes before it in the block.

This avoids expensive block scans when we are removing special instructions from the beginning of the block. At the moment, this case is not heavily used, though it does trigger in GVN when doing CSE of calls. The main motivation was a change I'm no longer planning to move forward with, but the cache optimization seemed worthwhile as a minor perf win at low cost.

Differential Revision: https://reviews.llvm.org/D111768
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change restructures the cache used in IPT to point not to the first special instruction, but to the first instruction which *could* be special. That is, the cached reference is always equal to the first special, or comes before it in the block.

This avoids expensive block scans when we are removing special instructions from the beginning of the block. At the moment, this case is not heavily used, though it does trigger in GVN when doing CSE of calls. The main motivation was a change I'm no longer planning to move forward with, but the cache optimization seemed worthwhile as a minor perf win at low cost.

Differential Revision: https://reviews.llvm.org/D111768
</pre>
</div>
</content>
</entry>
<entry>
<title>[IPT] Add a statistic to track instructions scanned to answer queries</title>
<updated>2021-10-08T17:59:35+00:00</updated>
<author>
<name>Philip Reames</name>
<email>listmail@philipreames.com</email>
</author>
<published>2021-10-08T17:49:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=edf31b4db1be3acdac1204a1c232454af20569e4'/>
<id>edf31b4db1be3acdac1204a1c232454af20569e4</id>
<content type='text'>
I'm planning some changes to the invalidation mechanism here, and having a concrete mechanism to track progress is key.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I'm planning some changes to the invalidation mechanism here, and having a concrete mechanism to track progress is key.
</pre>
</div>
</content>
</entry>
<entry>
<title>[IPT] Narrow scope of removeInstruction invalidation [NFC]</title>
<updated>2021-10-08T17:35:03+00:00</updated>
<author>
<name>Philip Reames</name>
<email>listmail@philipreames.com</email>
</author>
<published>2021-10-08T17:32:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=b4498e6b8d7f55e0fe9e26a5f5d21ec1a78f6fb0'/>
<id>b4498e6b8d7f55e0fe9e26a5f5d21ec1a78f6fb0</id>
<content type='text'>
We only need to invalidate if the instruction being removed is the cached "first special instruction".  If the instruction is before that one, it can't (by assumption) be special.  If it is after that one, it wasn't the first.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We only need to invalidate if the instruction being removed is the cached "first special instruction".  If the instruction is before that one, it can't (by assumption) be special.  If it is after that one, it wasn't the first.
</pre>
</div>
</content>
</entry>
</feed>
