<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/Support/Timer.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>[Support] Use "using" instead of "typedef" (NFC) (#166130)</title>
<updated>2025-11-03T16:41:32+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2025-11-03T16:41:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5ed8f4847673f69dfe984a9ad653035a06e265bb'/>
<id>5ed8f4847673f69dfe984a9ad653035a06e265bb</id>
<content type='text'>
Identified with modernize-use-using.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Identified with modernize-use-using.</pre>
</div>
</content>
</entry>
<entry>
<title>[NFC] Add PrintOnExit parameter to a  llvm::TimerGroup (#164407)</title>
<updated>2025-10-24T15:14:20+00:00</updated>
<author>
<name>Arseniy Zaostrovnykh</name>
<email>necto.ne@gmail.com</email>
</author>
<published>2025-10-24T15:14:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9824930744d50667aad3539d7936571a6d148a11'/>
<id>9824930744d50667aad3539d7936571a6d148a11</id>
<content type='text'>
Clean up AnalysisConsumer code from the timer-related branches that are
not used most of the time, and move this logic to Timer.cpp, which is a
more relevant place and allows for a cleaner implementation.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Clean up AnalysisConsumer code from the timer-related branches that are
not used most of the time, and move this logic to Timer.cpp, which is a
more relevant place and allows for a cleaner implementation.</pre>
</div>
</content>
</entry>
<entry>
<title>[Support] Fix memory leak in `Timer.cpp` on shutdown (#159983)</title>
<updated>2025-09-22T12:41:22+00:00</updated>
<author>
<name>Alexandre Ganea</name>
<email>aganea@havenstudios.com</email>
</author>
<published>2025-09-22T12:41:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e52792e2f830df743095d5e1bc15b4bfb51d40f3'/>
<id>e52792e2f830df743095d5e1bc15b4bfb51d40f3</id>
<content type='text'>
This used to happen in the global destruction, after `main()` has
exited. Previously, we were re-creating the `llvm::TimerGlobals` object
at this point.

&lt;img width="855" height="270" alt="image"
src="https://github.com/user-attachments/assets/757e9416-a74a-406a-841e-d3e4cc6a69a1"
/&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This used to happen in the global destruction, after `main()` has
exited. Previously, we were re-creating the `llvm::TimerGlobals` object
at this point.

&lt;img width="855" height="270" alt="image"
src="https://github.com/user-attachments/assets/757e9416-a74a-406a-841e-d3e4cc6a69a1"
/&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm] Remove unused includes (NFC) (#142733)</title>
<updated>2025-06-04T19:30:52+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2025-06-04T19:30:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=228f66807d0be1d7873e075fc81baf41001950b5'/>
<id>228f66807d0be1d7873e075fc81baf41001950b5</id>
<content type='text'>
These are identified by misc-include-cleaner.  I've filtered out those
that break builds.  Also, I'm staying away from llvm-config.h,
config.h, and Compiler.h, which likely cause platform- or
compiler-specific build failures.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These are identified by misc-include-cleaner.  I've filtered out those
that break builds.  Also, I'm staying away from llvm-config.h,
config.h, and Compiler.h, which likely cause platform- or
compiler-specific build failures.</pre>
</div>
</content>
</entry>
<entry>
<title>[clang] Implement JSON formatted -ftime-report (#137737)</title>
<updated>2025-04-30T20:43:05+00:00</updated>
<author>
<name>Alan Zhao</name>
<email>ayzhao@google.com</email>
</author>
<published>2025-04-30T20:43:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4a6c81dc0e2790ec48a7da483970b95d847be8d7'/>
<id>4a6c81dc0e2790ec48a7da483970b95d847be8d7</id>
<content type='text'>
This patch adds a new flag, -ftime-report-json, which outputs the same
information as -ftime-report but as JSON instead of -ftime-report's
pretty printed format.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch adds a new flag, -ftime-report-json, which outputs the same
information as -ftime-report but as JSON instead of -ftime-report's
pretty printed format.</pre>
</div>
</content>
</entry>
<entry>
<title>Reapply "Use global TimerGroups for both new pass manager and old pass manager timers" (#131173) (#131217)</title>
<updated>2025-03-13T23:20:39+00:00</updated>
<author>
<name>Alan Zhao</name>
<email>ayzhao@google.com</email>
</author>
<published>2025-03-13T23:20:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=864a53b4a414d2da9b90712af196d5e4733b0eee'/>
<id>864a53b4a414d2da9b90712af196d5e4733b0eee</id>
<content type='text'>
This reverts commit 31ebe6647b7f1fc7f6778a5438175b12f82357ae.

The reason for the test failure is likely due to
`Name2PairMap::getTimerGroup(...)` not holding a lock.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 31ebe6647b7f1fc7f6778a5438175b12f82357ae.

The reason for the test failure is likely due to
`Name2PairMap::getTimerGroup(...)` not holding a lock.</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "Use global TimerGroups for both new pass manager and old pass manager timers" (#131173)</title>
<updated>2025-03-13T17:29:15+00:00</updated>
<author>
<name>Arthur Eubanks</name>
<email>aeubanks@google.com</email>
</author>
<published>2025-03-13T17:29:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=31ebe6647b7f1fc7f6778a5438175b12f82357ae'/>
<id>31ebe6647b7f1fc7f6778a5438175b12f82357ae</id>
<content type='text'>
Reverts llvm/llvm-project#130375

Causes breakages, e.g.
https://lab.llvm.org/buildbot/#/builders/160/builds/14607</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reverts llvm/llvm-project#130375

Causes breakages, e.g.
https://lab.llvm.org/buildbot/#/builders/160/builds/14607</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm][Timer] Use global TimerGroups for both new pass manager and old pass manager timers (#130375)</title>
<updated>2025-03-13T17:13:28+00:00</updated>
<author>
<name>Alan Zhao</name>
<email>ayzhao@google.com</email>
</author>
<published>2025-03-13T17:13:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=09d8e442ac2884aabe4cdfb01d1444b54cff7147'/>
<id>09d8e442ac2884aabe4cdfb01d1444b54cff7147</id>
<content type='text'>
Additionally, remove the behavior for both pass manager's timer manager
classes (`PassTimingInfo` for the old pass manager and
`TimePassesHandler` for the new pass manager) where these classes would
print the values of their timers upon destruction.

Currently, each pass manager manages their own `TimerGroup`s. This is
problematic because of duplicate `TimerGroup`s (both pass managers have
a `TimerGroup` for pass times with identical names and descriptions).
The result is that in Clang, `-ftime-report` has two "Pass execution
timing report" sections (one for the new pass manager which manages
optimization passes, and one for the old pass manager which manages the
backend). The result of this change is that Clang's `-ftime-report` now
prints both optimization and backend pass timing info in a unified "Pass
execution timing report" section.

Moving the ownership of the `TimerGroups` to globals also makes it
easier to implement JSON-formatted `-ftime-report`. This was not
possible with the old structure because the two pass managers were
created and destroyed in far parts of the codebase and outputting JSON
requires the printing logic to be at the same place because of
formatting.

Previous discourse discussion:
https://discourse.llvm.org/t/difficulties-with-implementing-json-formatted-ftime-report/84353</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Additionally, remove the behavior for both pass manager's timer manager
classes (`PassTimingInfo` for the old pass manager and
`TimePassesHandler` for the new pass manager) where these classes would
print the values of their timers upon destruction.

Currently, each pass manager manages their own `TimerGroup`s. This is
problematic because of duplicate `TimerGroup`s (both pass managers have
a `TimerGroup` for pass times with identical names and descriptions).
The result is that in Clang, `-ftime-report` has two "Pass execution
timing report" sections (one for the new pass manager which manages
optimization passes, and one for the old pass manager which manages the
backend). The result of this change is that Clang's `-ftime-report` now
prints both optimization and backend pass timing info in a unified "Pass
execution timing report" section.

Moving the ownership of the `TimerGroups` to globals also makes it
easier to implement JSON-formatted `-ftime-report`. This was not
possible with the old structure because the two pass managers were
created and destroyed in far parts of the codebase and outputting JSON
requires the printing logic to be at the same place because of
formatting.

Previous discourse discussion:
https://discourse.llvm.org/t/difficulties-with-implementing-json-formatted-ftime-report/84353</pre>
</div>
</content>
</entry>
<entry>
<title>[llvm][Timer] Don't print timers in TimerGroup when all Timers are removed (#131026)</title>
<updated>2025-03-12T23:20:13+00:00</updated>
<author>
<name>Arthur Eubanks</name>
<email>aeubanks@google.com</email>
</author>
<published>2025-03-12T23:20:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=1cfca53b9f2eadbf864b85995ec7f819d7f29b5e'/>
<id>1cfca53b9f2eadbf864b85995ec7f819d7f29b5e</id>
<content type='text'>
Only print them on TimerGroup destruction (or eagerly when
TimerGroup::printAll() is called).

We should be able to destroy all Timers in a TimerGroup while delaying
printing the stored TimeRecords.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Only print them on TimerGroup destruction (or eagerly when
TimerGroup::printAll() is called).

We should be able to destroy all Timers in a TimerGroup while delaying
printing the stored TimeRecords.</pre>
</div>
</content>
</entry>
<entry>
<title>[Timer] Remove signpots overhead on unsupported systems</title>
<updated>2025-01-11T04:46:57+00:00</updated>
<author>
<name>Fangrui Song</name>
<email>i@maskray.me</email>
</author>
<published>2025-01-11T04:46:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=24bd9bc0b59d51c82e9a4d84c21d86d58d0ef6ce'/>
<id>24bd9bc0b59d51c82e9a4d84c21d86d58d0ef6ce</id>
<content type='text'>
startTimer/stopTimer are frequently called. It's important to reduce
overhead.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
startTimer/stopTimer are frequently called. It's important to reduce
overhead.
</pre>
</div>
</content>
</entry>
</feed>
