[all-commits] [llvm/llvm-project] 543f13: [BOLT] Allow function entry to be a cold fragment

Huan Nguyen via All-commits all-commits at lists.llvm.org
Sat Jun 18 11:40:09 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 543f13c99b1fa87d491f17dc4a9bcead471b3c58
      https://github.com/llvm/llvm-project/commit/543f13c99b1fa87d491f17dc4a9bcead471b3c58
  Author: Huan Nguyen <nhuhuan at yahoo.com>
  Date:   2022-06-18 (Sat, 18 Jun 2022)

  Changed paths:
    M bolt/lib/Rewrite/RewriteInstance.cpp
    A bolt/test/X86/shared_object_entry.s

  Log Message:
  -----------
  [BOLT] Allow function entry to be a cold fragment

Allow cold fragment to get new address.

Our previous assumption is that a fragment (.cold) is only reached
through the main fragment of same function. In addition, .cold fragment
must be reached through either (a) direct transfer, or (b) split jump
table. For (a), we perform a simple fix-up. For (b), we currently mark
all relevant fragments as non-simple. Therefore, there is no need to
get new address for .cold fragment.

This is not always the case, as function entry can be rarely executed,
and is placed in .text.cold segment. Essentially we cannot tell which
the source-level function entry is based on hot and cold segments,
so we must treat each fragment a function on its own. Therfore, we
remove the assertion that a function entry cannot be cold fragment.

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

Reviewed By: Amir

Differential Revision: https://reviews.llvm.org/D128111




More information about the All-commits mailing list