<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/bolt/lib/Core/JumpTable.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>[BOLT] Change Relocation Type to 32-bit NFCI (#130792)</title>
<updated>2025-03-14T18:15:59+00:00</updated>
<author>
<name>Paschalis Mpeis</name>
<email>paschalis.mpeis@arm.com</email>
</author>
<published>2025-03-14T18:15:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2f9d94981c0eb76fe2127b09351ba7b84064471c'/>
<id>2f9d94981c0eb76fe2127b09351ba7b84064471c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT][NFC] Remove C-style out of bounds array ref</title>
<updated>2023-01-25T20:59:11+00:00</updated>
<author>
<name>Rafael Auler</name>
<email>rafaelauler@fb.com</email>
</author>
<published>2023-01-25T19:38:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7768f63e5b7adc8a92b8f8041e9c1d298b011128'/>
<id>7768f63e5b7adc8a92b8f8041e9c1d298b011128</id>
<content type='text'>
Old code breaks build with libstdc++ with assertions. Fix it.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Old code breaks build with libstdc++ with assertions. Fix it.
</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT] Support multiple parents for split jump table</title>
<updated>2022-07-14T06:37:31+00:00</updated>
<author>
<name>Huan Nguyen</name>
<email>nhuhuan@yahoo.com</email>
</author>
<published>2022-07-14T06:35:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=05523dc32d8ca81d9a92ff955194a9e80cf79dc0'/>
<id>05523dc32d8ca81d9a92ff955194a9e80cf79dc0</id>
<content type='text'>
There are two assumptions regarding jump table:
(a) It is accessed by only one fragment, say, Parent
(b) All entries target instructions in Parent

For (a), BOLT stores jump table entries as relative offset to Parent.
For (b), BOLT treats jump table entries target somewhere out of Parent
as INVALID_OFFSET, including fragment of same split function.

In this update, we extend (a) and (b) to include fragment of same split
functinon. For (a), we store jump table entries in absolute offset
instead. In addition, jump table will store all fragments that access
it. A fragment uses this information to only create label for jump table
entries that target to that fragment.

For (b), using absolute offset allows jump table entries to target
fragments of same split function, i.e., extend support for split jump
table. This can be done using relocation (fragment start/size) and
fragment detection heuristics (e.g., using symbol name pattern for
non-stripped binaries).

For jump table targets that can only be reached by one fragment, we
mark them as local label; otherwise, they would be the secondary
function entry to the target fragment.

Test Plan
```
ninja check-bolt
```

Reviewed By: Amir

Differential Revision: https://reviews.llvm.org/D128474
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There are two assumptions regarding jump table:
(a) It is accessed by only one fragment, say, Parent
(b) All entries target instructions in Parent

For (a), BOLT stores jump table entries as relative offset to Parent.
For (b), BOLT treats jump table entries target somewhere out of Parent
as INVALID_OFFSET, including fragment of same split function.

In this update, we extend (a) and (b) to include fragment of same split
functinon. For (a), we store jump table entries in absolute offset
instead. In addition, jump table will store all fragments that access
it. A fragment uses this information to only create label for jump table
entries that target to that fragment.

For (b), using absolute offset allows jump table entries to target
fragments of same split function, i.e., extend support for split jump
table. This can be done using relocation (fragment start/size) and
fragment detection heuristics (e.g., using symbol name pattern for
non-stripped binaries).

For jump table targets that can only be reached by one fragment, we
mark them as local label; otherwise, they would be the secondary
function entry to the target fragment.

Test Plan
```
ninja check-bolt
```

Reviewed By: Amir

Differential Revision: https://reviews.llvm.org/D128474
</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT][NFC] Reduce includes with include-what-you-use</title>
<updated>2022-01-21T20:05:47+00:00</updated>
<author>
<name>Amir Ayupov</name>
<email>aaupov@fb.com</email>
</author>
<published>2021-10-30T00:27:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f8c7fb499be6c2712be828ffe7378802dfd645a0'/>
<id>f8c7fb499be6c2712be828ffe7378802dfd645a0</id>
<content type='text'>
Summary: Removed redundant includes with IWYU

Test Plan: ninja bolt

Reviewers: maksfb

FBD32043568
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary: Removed redundant includes with IWYU

Test Plan: ninja bolt

Reviewers: maksfb

FBD32043568
</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLTCore] [NFC] Fix braces usages according to LLVM</title>
<updated>2021-12-20T19:07:46+00:00</updated>
<author>
<name>Rafael Auler</name>
<email>rafaelauler@fb.com</email>
</author>
<published>2021-12-20T19:07:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=3652483c8ea7ec20e8d0cb4aef0630688011cc08'/>
<id>3652483c8ea7ec20e8d0cb4aef0630688011cc08</id>
<content type='text'>
Summary:
Fix according to Coding Standards doc, section Don't Use
Braces on Simple Single-Statement Bodies of if/else/loop Statements.
This set of changes applies to lib Core only.

(cherry picked from FBD33240028)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary:
Fix according to Coding Standards doc, section Don't Use
Braces on Simple Single-Statement Bodies of if/else/loop Statements.
This set of changes applies to lib Core only.

(cherry picked from FBD33240028)
</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT][NFC] Fix file-description comments</title>
<updated>2021-12-21T18:21:41+00:00</updated>
<author>
<name>Maksim Panchenko</name>
<email>maks@fb.com</email>
</author>
<published>2021-12-21T18:21:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=2f09f445b2d6b3ef197aecd8d1e06d08140380f3'/>
<id>2f09f445b2d6b3ef197aecd8d1e06d08140380f3</id>
<content type='text'>
Summary: Fix comments at the start of source files.

(cherry picked from FBD33274597)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary: Fix comments at the start of source files.

(cherry picked from FBD33274597)
</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT][NFC] Reformat with clang-format</title>
<updated>2021-12-15T00:52:51+00:00</updated>
<author>
<name>Maksim Panchenko</name>
<email>maks@fb.com</email>
</author>
<published>2021-12-15T00:52:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=40c2e0fafe5675306f4ad43910bf6e2fd2025ff3'/>
<id>40c2e0fafe5675306f4ad43910bf6e2fd2025ff3</id>
<content type='text'>
Summary: Selectively apply clang-format to BOLT code base.

(cherry picked from FBD33119052)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary: Selectively apply clang-format to BOLT code base.

(cherry picked from FBD33119052)
</pre>
</div>
</content>
</entry>
<entry>
<title>Rebase: [NFC] Refactor sources to be buildable in shared mode</title>
<updated>2021-10-08T18:47:10+00:00</updated>
<author>
<name>Rafael Auler</name>
<email>rafaelauler@fb.com</email>
</author>
<published>2021-10-08T18:47:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=a34c753fe709a624f5b087397fb05adeac2311e4'/>
<id>a34c753fe709a624f5b087397fb05adeac2311e4</id>
<content type='text'>
Summary:
Moves source files into separate components, and make explicit
component dependency on each other, so LLVM build system knows how to
build BOLT in BUILD_SHARED_LIBS=ON.

Please use the -c merge.renamelimit=230 git option when rebasing your
work on top of this change.

To achieve this, we create a new library to hold core IR files (most
classes beginning with Binary in their names), a new library to hold
Utils, some command line options shared across both RewriteInstance
and core IR files, a new library called Rewrite to hold most classes
concerned with running top-level functions coordinating the binary
rewriting process, and a new library called Profile to hold classes
dealing with profile reading and writing.

To remove the dependency from BinaryContext into X86-specific classes,
we do some refactoring on the BinaryContext constructor to receive a
reference to the specific backend directly from RewriteInstance. Then,
the dependency on X86 or AArch64-specific classes is transfered to the
Rewrite library. We can't have the Core library depend on targets
because targets depend on Core (which would create a cycle).

Files implementing the entry point of a tool are transferred to the
tools/ folder. All header files are transferred to the include/
folder. The src/ folder was renamed to lib/.

(cherry picked from FBD32746834)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary:
Moves source files into separate components, and make explicit
component dependency on each other, so LLVM build system knows how to
build BOLT in BUILD_SHARED_LIBS=ON.

Please use the -c merge.renamelimit=230 git option when rebasing your
work on top of this change.

To achieve this, we create a new library to hold core IR files (most
classes beginning with Binary in their names), a new library to hold
Utils, some command line options shared across both RewriteInstance
and core IR files, a new library called Rewrite to hold most classes
concerned with running top-level functions coordinating the binary
rewriting process, and a new library called Profile to hold classes
dealing with profile reading and writing.

To remove the dependency from BinaryContext into X86-specific classes,
we do some refactoring on the BinaryContext constructor to receive a
reference to the specific backend directly from RewriteInstance. Then,
the dependency on X86 or AArch64-specific classes is transfered to the
Rewrite library. We can't have the Core library depend on targets
because targets depend on Core (which would create a cycle).

Files implementing the entry point of a tool are transferred to the
tools/ folder. All header files are transferred to the include/
folder. The src/ folder was renamed to lib/.

(cherry picked from FBD32746834)
</pre>
</div>
</content>
</entry>
</feed>
