[lld] [lld][macho] Support order cstrings with -order_file_cstring (PR #140307)
via llvm-commits
llvm-commits at lists.llvm.org
Fri May 30 12:16:20 PDT 2025
================
@@ -388,3 +401,41 @@ macho::PriorityBuilder::buildInputSectionPriorities() {
return sectionPriorities;
}
+
+std::vector<StringPiecePair> macho::PriorityBuilder::buildCStringPriorities(
+ ArrayRef<CStringInputSection *> inputs) {
+ // Split the input strings into hold and cold sets.
+ // Order hot set based on -order_file_cstring for performance improvement;
+ // TODO: Order cold set of cstrings for compression via BP.
+ std::vector<std::pair<int, StringPiecePair>>
+ hotStringPrioritiesAndStringPieces;
+ std::vector<StringPiecePair> coldStringPieces;
+ std::vector<StringPiecePair> orderedStringPieces;
+
+ for (CStringInputSection *isec : inputs) {
+ for (const auto &[stringPieceIdx, piece] : llvm::enumerate(isec->pieces)) {
+ if (!piece.live)
+ continue;
+
+ std::optional<int> priority = getSymbolOrCStringPriority(
+ std::to_string(piece.hash), isec->getFile());
----------------
SharonXSharon wrote:
> I don't know if ; is an allowed character in a symbol, should we use that?
Do you mean just for `CSTR;` or do you mean all the other places using `:` currently should be changed to something like `;`?
https://github.com/llvm/llvm-project/pull/140307
More information about the llvm-commits
mailing list