llvm-project/bolt/lib
Huan Nguyen 82095bd5ed [BOLT] Mark fragments related to split jump table as non-simple
Mark fragments related to split jump table as non-simple.

A function could be splitted into hot and cold fragments. A split jump table is
challenging for correctly reconstructing control flow graphs, so it was marked
as ignored. This update marks those fragments as non-simple, allowing them
to be printed and partial control flow graph construction.

Test Plan:
```
llvm-lit -a tools/bolt/test/X86/split-func-icf.s
```
This test has two functions (main, main2), each has a jump table target to the
same cold portion main2.cold.1(*2). We try to print out only this cold portion.
If it is ignored, it cannot be printed. If it is non-simple, it can be printed. We
verify that it can be printed.

Reviewed By: Amir

Differential Revision: https://reviews.llvm.org/D127464
2022-06-10 15:49:32 -07:00
..
Core [BOLT] Mark fragments related to split jump table as non-simple 2022-06-10 15:49:32 -07:00
Passes [BOLT] Set valid index for functions with profiles 2022-06-08 14:13:12 +03:00
Profile [bolt] Remove unneeded cl::ZeroOrMore for cl::opt options 2022-06-05 13:29:49 -07:00
Rewrite [BOLT] Mark fragments related to split jump table as non-simple 2022-06-10 15:49:32 -07:00
RuntimeLibs [bolt] Remove unneeded cl::ZeroOrMore for cl::opt options 2022-06-05 13:29:49 -07:00
Target [BOLT] Add support for GOTPCRELX relocations 2022-06-09 13:37:04 -07:00
Utils [bolt] Remove unneeded cl::ZeroOrMore for cl::opt options 2022-06-05 13:29:49 -07:00
CMakeLists.txt Rebase: [NFC] Refactor sources to be buildable in shared mode 2021-10-08 11:47:10 -07:00