diff options
| author | Amir Ayupov <aaupov@fb.com> | 2025-02-18 19:17:23 -0800 |
|---|---|---|
| committer | Amir Ayupov <aaupov@fb.com> | 2025-02-18 19:17:23 -0800 |
| commit | 1ba7c7ac19cebe759b2ed92d95701021f6e38dc7 (patch) | |
| tree | 62e1b1cc59dff9a45505c3f99d1a0c774857f6cd | |
| parent | 8d5f280559c7d17e1e54afe3df738f65f6051386 (diff) | |
[𝘀𝗽𝗿] initial versionusers/aaupov/spr/bolt-use-restored-names-in-funcs-file-no-regex
Created using spr 1.3.4
| -rw-r--r-- | bolt/lib/Rewrite/RewriteInstance.cpp | 10 | ||||
| -rw-r--r-- | bolt/test/X86/funcs-no-regex.s | 16 |
2 files changed, 21 insertions, 5 deletions
diff --git a/bolt/lib/Rewrite/RewriteInstance.cpp b/bolt/lib/Rewrite/RewriteInstance.cpp index 4329235d4704..13e7e52dc569 100644 --- a/bolt/lib/Rewrite/RewriteInstance.cpp +++ b/bolt/lib/Rewrite/RewriteInstance.cpp @@ -2976,8 +2976,7 @@ void RewriteInstance::selectFunctionsToProcess() { populateFunctionNames(opts::FunctionNamesFileNR, opts::ForceFunctionNamesNR); // Make a set of functions to process to speed up lookups. - std::unordered_set<std::string> ForceFunctionsNR( - opts::ForceFunctionNamesNR.begin(), opts::ForceFunctionNamesNR.end()); + StringSet<> ForceFunctionsNR(opts::ForceFunctionNamesNR); if ((!opts::ForceFunctionNames.empty() || !opts::ForceFunctionNamesNR.empty()) && @@ -3051,9 +3050,10 @@ void RewriteInstance::selectFunctionsToProcess() { return true; // Non-regex check (-funcs-no-regex and -funcs-file-no-regex). - for (const StringRef Name : Function.getNames()) - if (ForceFunctionsNR.count(Name.str())) - return true; + if (Function.forEachName([&](StringRef Name) { + return ForceFunctionsNR.contains(NameResolver::restore(Name)); + })) + return true; return false; } diff --git a/bolt/test/X86/funcs-no-regex.s b/bolt/test/X86/funcs-no-regex.s new file mode 100644 index 000000000000..a2cf8c1e91ce --- /dev/null +++ b/bolt/test/X86/funcs-no-regex.s @@ -0,0 +1,16 @@ +## Checks handling of function names passed via -funcs-no-regex + +# RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %s -o %t.o +# RUN: ld.lld %t.o -o %t.exe -nostdlib +# RUN: llvm-bolt %t.exe -o %t.out -funcs-no-regex=func -print-cfg | FileCheck %s +# CHECK: Binary Function "func/1" + +.globl _start +.type _start, @function +_start: + ret + .size _start, .-_start + +.type func, @function +func: + ud2 |
