<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/bolt/docs/CommandLineArgumentReference.md, 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>[BOLT][NFC] Clean up the outdated option --write-dwp in doc (#166150)</title>
<updated>2025-11-04T10:27:53+00:00</updated>
<author>
<name>Jinjie Huang</name>
<email>huangjinjie@bytedance.com</email>
</author>
<published>2025-11-04T10:27:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f7be258c28939b25f5f9ec07174ace0d81ca3eea'/>
<id>f7be258c28939b25f5f9ec07174ace0d81ca3eea</id>
<content type='text'>
Since the "--write-dwp" option has been removed in
[PR](https://github.com/llvm/llvm-project/pull/100771), this patch also
cleans up the corresponding document and test to avoid misleading
issues.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since the "--write-dwp" option has been removed in
[PR](https://github.com/llvm/llvm-project/pull/100771), this patch also
cleans up the corresponding document and test to avoid misleading
issues.</pre>
</div>
</content>
</entry>
<entry>
<title>[bolt] Fix typos discovered by codespell (#124726)</title>
<updated>2025-10-14T12:45:40+00:00</updated>
<author>
<name>Christian Clauss</name>
<email>cclauss@me.com</email>
</author>
<published>2025-10-14T12:45:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0fc05aa1c6d76a1830f2cf9227e15b168ccc1c08'/>
<id>0fc05aa1c6d76a1830f2cf9227e15b168ccc1c08</id>
<content type='text'>
https://github.com/codespell-project/codespell
```bash
codespell bolt --skip="*.yaml,Maintainers.txt" --write-changes \
    --ignore-words-list=acount,alledges,ans,archtype,defin,iself,mis,mmaped,othere,outweight,vas
```</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/codespell-project/codespell
```bash
codespell bolt --skip="*.yaml,Maintainers.txt" --write-changes \
    --ignore-words-list=acount,alledges,ans,archtype,defin,iself,mis,mmaped,othere,outweight,vas
```</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT][AArch64] Inlining of Memcpy (#154929)</title>
<updated>2025-09-09T13:09:23+00:00</updated>
<author>
<name>YafetBeyene</name>
<email>ybeyene@nvidia.com</email>
</author>
<published>2025-09-09T13:09:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=244588b9d712e1cebcd0a3af3c19c97c0d9055b8'/>
<id>244588b9d712e1cebcd0a3af3c19c97c0d9055b8</id>
<content type='text'>
The pass for inlining memcpy in BOLT was currently X86-specific and was
using the instruction `rep movsb`.

This patch implements a static size analysis system for AArch64 memcpy
inlining that extracts copy sizes from preceding instructions to then
use it to generate the optimal width-specific load/store sequences.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The pass for inlining memcpy in BOLT was currently X86-specific and was
using the instruction `rep movsb`.

This patch implements a static size analysis system for AArch64 memcpy
inlining that extracts copy sizes from preceding instructions to then
use it to generate the optimal width-specific load/store sequences.</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT] Add dump-dot-func option for selective function CFG dumping (#153007)</title>
<updated>2025-08-22T09:51:09+00:00</updated>
<author>
<name>YafetBeyene</name>
<email>127161378+yafet-a@users.noreply.github.com</email>
</author>
<published>2025-08-22T09:51:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=fda24dbc16abc414bf21b74e77d3acd2ecadfdb9'/>
<id>fda24dbc16abc414bf21b74e77d3acd2ecadfdb9</id>
<content type='text'>
## Change:
* Added `--dump-dot-func` command-line option that allows users to dump
CFGs only for specific functions instead of dumping all functions (the
current only available option being `--dump-dot-all`)

## Usage:
* Users can now specify function names or regex patterns (e.g.,
`--dump-dot-func=main,helper` or `--dump-dot-func="init.*`") to generate
.dot files only for functions of interest
* Aims to save time when analysing specific functions in large binaries
(e.g., only dumping graphs for performance-critical functions identified
through profiling) and we can now avoid reduce output clutter from
generating thousands of unnecessary .dot files when analysing large
binaries

## Testing
The introduced test `dump-dot-func.test` confirms the new option does
the following:

- [x] 1. `dump-dot-func` can correctly filter a specified functions
- [x] 2. Can achieve the above with regexes
- [x] 3. Can do 1. with a list of functions
- [x] No option specified creates no dot files
- [x] Passing in a non-existent function generates no dumping messages
- [x] `dump-dot-all` continues to work as expected</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
## Change:
* Added `--dump-dot-func` command-line option that allows users to dump
CFGs only for specific functions instead of dumping all functions (the
current only available option being `--dump-dot-all`)

## Usage:
* Users can now specify function names or regex patterns (e.g.,
`--dump-dot-func=main,helper` or `--dump-dot-func="init.*`") to generate
.dot files only for functions of interest
* Aims to save time when analysing specific functions in large binaries
(e.g., only dumping graphs for performance-critical functions identified
through profiling) and we can now avoid reduce output clutter from
generating thousands of unnecessary .dot files when analysing large
binaries

## Testing
The introduced test `dump-dot-func.test` confirms the new option does
the following:

- [x] 1. `dump-dot-func` can correctly filter a specified functions
- [x] 2. Can achieve the above with regexes
- [x] 3. Can do 1. with a list of functions
- [x] No option specified creates no dot files
- [x] Passing in a non-existent function generates no dumping messages
- [x] `dump-dot-all` continues to work as expected</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT/docs] The support for macro-op fusion was removed. (#121158)</title>
<updated>2024-12-26T19:18:12+00:00</updated>
<author>
<name>Davide Italiano</name>
<email>dcci@users.noreply.github.com</email>
</author>
<published>2024-12-26T19:18:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=62c39d773422fd7193758c325085c864a67a55cc'/>
<id>62c39d773422fd7193758c325085c864a67a55cc</id>
<content type='text'>
Update the documentation accordingly.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Update the documentation accordingly.</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT] Add support for safe-icf (#116275)</title>
<updated>2024-12-17T05:49:53+00:00</updated>
<author>
<name>Alexander Yermolovich</name>
<email>43973793+ayermolo@users.noreply.github.com</email>
</author>
<published>2024-12-17T05:49:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3c357a49d61e4c81a1ac016502ee504521bc8dda'/>
<id>3c357a49d61e4c81a1ac016502ee504521bc8dda</id>
<content type='text'>
Identical Code Folding (ICF) folds functions that are identical into one
function, and updates symbol addresses to the new address. This reduces
the size of a binary, but can lead to problems. For example when
function pointers are compared. This can be done either explicitly in
the code or generated IR by optimization passes like Indirect Call
Promotion (ICP). After ICF what used to be two different addresses
become the same address. This can lead to a different code path being
taken.

This is where safe ICF comes in. Linker (LLD) does it using address
significant section generated by clang. If symbol is in it, or an object
doesn't have this section symbols are not folded.

BOLT does not have the information regarding which objects do not have
this section, so can't re-use this mechanism.

This implementation scans code section and conservatively marks
functions symbols as unsafe. It treats symbols as unsafe if they are
used in non-control flow instruction. It also scans through the data
relocation sections and does the same for relocations that reference a
function symbol. The latter handles the case when function pointer is
stored in a local or global variable, etc. If a relocation address
points within a vtable these symbols are skipped.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Identical Code Folding (ICF) folds functions that are identical into one
function, and updates symbol addresses to the new address. This reduces
the size of a binary, but can lead to problems. For example when
function pointers are compared. This can be done either explicitly in
the code or generated IR by optimization passes like Indirect Call
Promotion (ICP). After ICF what used to be two different addresses
become the same address. This can lead to a different code path being
taken.

This is where safe ICF comes in. Linker (LLD) does it using address
significant section generated by clang. If symbol is in it, or an object
doesn't have this section symbols are not folded.

BOLT does not have the information regarding which objects do not have
this section, so can't re-use this mechanism.

This implementation scans code section and conservatively marks
functions symbols as unsafe. It treats symbols as unsafe if they are
used in non-control flow instruction. It also scans through the data
relocation sections and does the same for relocations that reference a
function symbol. The latter handles the case when function pointer is
stored in a local or global variable, etc. If a relocation address
points within a vtable these symbols are skipped.</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT][DWARF] Add parallelization for processing of DWO debug information (#100282)</title>
<updated>2024-08-08T23:41:51+00:00</updated>
<author>
<name>Sayhaan Siddiqui</name>
<email>49014204+sayhaan@users.noreply.github.com</email>
</author>
<published>2024-08-08T23:41:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6aad62cf5b7f91f4b02266cf72469e2c8e28dbef'/>
<id>6aad62cf5b7f91f4b02266cf72469e2c8e28dbef</id>
<content type='text'>
Enables parallelization for the processing of DWO CUs.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Enables parallelization for the processing of DWO CUs.</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT] Fix typo from alterantive to alternative (#99704)</title>
<updated>2024-07-23T01:35:20+00:00</updated>
<author>
<name>Jordan Brantner</name>
<email>81778785+brantnej@users.noreply.github.com</email>
</author>
<published>2024-07-23T01:35:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d251a328b809ec66ca25cf72f71e127204eabfeb'/>
<id>d251a328b809ec66ca25cf72f71e127204eabfeb</id>
<content type='text'>
Fix typo from `alterantive` -&gt; `alternative`

Signed-off-by: Jordan Brantner &lt;brantnej@oregonstate.edu&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix typo from `alterantive` -&gt; `alternative`

Signed-off-by: Jordan Brantner &lt;brantnej@oregonstate.edu&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT][DWARF] Remove deprecated opt (#99575)</title>
<updated>2024-07-19T21:03:50+00:00</updated>
<author>
<name>Sayhaan Siddiqui</name>
<email>49014204+sayhaan@users.noreply.github.com</email>
</author>
<published>2024-07-19T21:03:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d54ec64f6743dee346bd22298577edf1985ce0b8'/>
<id>d54ec64f6743dee346bd22298577edf1985ce0b8</id>
<content type='text'>
Remove deprecated DeterministicDebugInfo option and its uses.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove deprecated DeterministicDebugInfo option and its uses.</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT] Match functions with call graph (#98125)</title>
<updated>2024-07-19T21:00:28+00:00</updated>
<author>
<name>Shaw Young</name>
<email>58664393+shawbyoung@users.noreply.github.com</email>
</author>
<published>2024-07-19T21:00:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=296a9563690f2fea78e4d746a6d1896262b69da4'/>
<id>296a9563690f2fea78e4d746a6d1896262b69da4</id>
<content type='text'>
Implemented call graph function matching. First, two call graphs are
constructed for both profiled and binary functions. Then functions are
hashed based on the names of their callee/caller functions. Finally,
functions are matched based on these neighbor hashes and the 
longest common prefix of their names. The `match-with-call-graph` 
flag turns this matching on.

Test Plan: Added match-with-call-graph.test. Matched 164 functions 
in a large binary with 10171 profiled functions.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Implemented call graph function matching. First, two call graphs are
constructed for both profiled and binary functions. Then functions are
hashed based on the names of their callee/caller functions. Finally,
functions are matched based on these neighbor hashes and the 
longest common prefix of their names. The `match-with-call-graph` 
flag turns this matching on.

Test Plan: Added match-with-call-graph.test. Matched 164 functions 
in a large binary with 10171 profiled functions.</pre>
</div>
</content>
</entry>
</feed>
