Skip to content

Commit b83c335

Browse files
author
Alexander Yermolovich
committed
simplified debug print, removed shared func
1 parent e36ec02 commit b83c335

12 files changed

+32
-43
lines changed

bolt/include/bolt/Passes/IdenticalCodeFolding.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ class IdenticalCodeFolding : public BinaryFunctionPass {
2727
return false;
2828
if (BF.hasSDTMarker())
2929
return false;
30+
if (!BF.isSafeToICF())
31+
return false;
3032
return BinaryFunctionPass::shouldOptimize(BF);
3133
}
3234

bolt/lib/Passes/IdenticalCodeFolding.cpp

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -393,22 +393,12 @@ Error IdenticalCodeFolding::markFunctionsUnsafeToFold(BinaryContext &BC) {
393393
"markUnsafe", /*ForceSequential*/ false, 2);
394394

395395
LLVM_DEBUG({
396-
std::vector<StringRef> Vect;
397-
std::mutex PrintMutex;
398-
ParallelUtilities::WorkFuncTy WorkFun = [&](BinaryFunction &BF) {
399-
if (BF.isSafeToICF())
400-
return;
401-
std::lock_guard<std::mutex> Lock(PrintMutex);
402-
Vect.push_back(BF.getOneName());
403-
};
404-
ParallelUtilities::PredicateTy SkipFunc =
405-
[&](const BinaryFunction &BF) -> bool { return false; };
406-
ParallelUtilities::runOnEachFunction(
407-
BC, ParallelUtilities::SchedulingPolicy::SP_TRIVIAL, WorkFun, SkipFunc,
408-
"markUnsafe", /*ForceSequential*/ false, 2);
409-
llvm::sort(Vect);
410-
for (const auto &FuncName : Vect)
411-
dbgs() << "BOLT-DEBUG: skipping function " << FuncName << '\n';
396+
for (auto &BFIter : BC.getBinaryFunctions()) {
397+
if (BFIter.second.isSafeToICF())
398+
continue;
399+
dbgs() << "BOLT-DEBUG: skipping function " << BFIter.second.getOneName()
400+
<< '\n';
401+
}
412402
});
413403
return ErrorStatus;
414404
}
@@ -422,9 +412,6 @@ Error IdenticalCodeFolding::runOnFunctions(BinaryContext &BC) {
422412
std::atomic<uint64_t> NumFoldedLastIteration{0};
423413
CongruentBucketsMap CongruentBuckets;
424414

425-
auto SkipFuncShared = [&](const BinaryFunction &BF) {
426-
return !shouldOptimize(BF) || !BF.isSafeToICF();
427-
};
428415
// Hash all the functions
429416
auto hashFunctions = [&]() {
430417
NamedRegionTimer HashFunctionsTimer("hashing", "hashing", "ICF breakdown",
@@ -444,7 +431,7 @@ Error IdenticalCodeFolding::runOnFunctions(BinaryContext &BC) {
444431
};
445432

446433
ParallelUtilities::PredicateTy SkipFunc = [&](const BinaryFunction &BF) {
447-
return SkipFuncShared(BF);
434+
return !shouldOptimize(BF);
448435
};
449436

450437
ParallelUtilities::runOnEachFunction(
@@ -460,7 +447,7 @@ Error IdenticalCodeFolding::runOnFunctions(BinaryContext &BC) {
460447
"ICF breakdown", opts::TimeICF);
461448
for (auto &BFI : BC.getBinaryFunctions()) {
462449
BinaryFunction &BF = BFI.second;
463-
if (SkipFuncShared(BF))
450+
if (!shouldOptimize(BF))
464451
continue;
465452
CongruentBuckets[&BF].emplace(&BF);
466453
}

bolt/test/X86/icf-safe-test1-no-cfg.test

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
# ICFCHECK-NEXT: folding _Z6barMulii into _Z6fooMulii
1414
# ICFCHECK-NEXT: folding _Z6barSubii into _Z6fooSubii
1515

16-
# SAFEICFCHECK: skipping function _Z6barAddii
16+
# SAFEICFCHECK: skipping function _Z6fooMulii
1717
# SAFEICFCHECK-NEXT: skipping function _Z6barMulii
18-
# SAFEICFCHECK-NEXT: skipping function _Z6fooMulii
18+
# SAFEICFCHECK-NEXT: skipping function _Z6barAddii
1919
# SAFEICFCHECK-NEXT: ICF iteration 1
2020
# SAFEICFCHECK-NEXT: folding _Z6barSubii into _Z6fooSubii
2121
# SAFEICFCHECK-NEXT: ===---------

bolt/test/X86/icf-safe-test1.test

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
# ICFCHECK-NEXT: folding _Z6barMulii into _Z6fooMulii
1414
# ICFCHECK-NEXT: folding _Z6barSubii into _Z6fooSubii
1515

16-
# SAFEICFCHECK: skipping function _Z6barAddii
16+
# SAFEICFCHECK: skipping function _Z6fooMulii
1717
# SAFEICFCHECK-NEXT: skipping function _Z6barMulii
18-
# SAFEICFCHECK-NEXT: skipping function _Z6fooMulii
18+
# SAFEICFCHECK-NEXT: skipping function _Z6barAddii
1919
# SAFEICFCHECK-NEXT: ICF iteration 1
2020
# SAFEICFCHECK-NEXT: folding _Z6barSubii into _Z6fooSubii
2121
# SAFEICFCHECK-NEXT: ===---------

bolt/test/X86/icf-safe-test2GlobalConstPtrNoPic.test

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
# ICFCHECK-NEXT: folding _Z6barMulii into _Z6fooMulii
1616
# ICFCHECK-NEXT: folding _Z6barSubii into _Z6fooSubii
1717

18-
# SAFEICFCHECK: skipping function _Z6barAddii
18+
# SAFEICFCHECK: skipping function _Z6fooMulii
1919
# SAFEICFCHECK-NEXT: skipping function _Z6barMulii
20-
# SAFEICFCHECK-NEXT: skipping function _Z6fooMulii
20+
# SAFEICFCHECK-NEXT: skipping function _Z6barAddii
2121
# SAFEICFCHECK-NEXT: ICF iteration 1
2222
# SAFEICFCHECK-NEXT: folding _Z12barAddHdlperii into _Z6fooAddii
2323
# SAFEICFCHECK-NEXT: folding _Z6barSubii into _Z6fooSubii

bolt/test/X86/icf-safe-test2GlobalConstPtrNoPicExtFuncRef.test

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
# ICFCHECK-NEXT: folding _Z6barMulii into _Z6fooMulii
1616
# ICFCHECK-NEXT: folding _Z6barSubii into _Z6fooSubii
1717

18-
# SAFEICFCHECK: skipping function _Z12barAddHdlperii
19-
# SAFEICFCHECK-NEXT: skipping function _Z19fooGlobalFuncHelperii
18+
# SAFEICFCHECK: skipping function _Z6fooMulii
2019
# SAFEICFCHECK-NEXT: skipping function _Z6barAddii
21-
# SAFEICFCHECK-NEXT: skipping function _Z6fooMulii
20+
# SAFEICFCHECK-NEXT: skipping function _Z12barAddHdlperii
21+
# SAFEICFCHECK-NEXT: skipping function _Z19fooGlobalFuncHelperii
2222
# SAFEICFCHECK-NEXT: ICF iteration 1
2323
# SAFEICFCHECK-NEXT: folding _Z6barSubii into _Z6fooSubii
2424
# SAFEICFCHECK-NEXT: ===---------

bolt/test/X86/icf-safe-test2GlobalConstPtrPic.test

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
# ICFCHECK-NEXT: folding _Z6barMulii into _Z6fooMulii
1616
# ICFCHECK-NEXT: folding _Z6barSubii into _Z6fooSubii
1717

18-
# SAFEICFCHECK: skipping function _Z6barAddii
18+
# SAFEICFCHECK: skipping function _Z6fooMulii
1919
# SAFEICFCHECK-NEXT: skipping function _Z6barMulii
20-
# SAFEICFCHECK-NEXT: skipping function _Z6fooMulii
20+
# SAFEICFCHECK-NEXT: skipping function _Z6barAddii
2121
# SAFEICFCHECK-NEXT: ICF iteration 1
2222
# SAFEICFCHECK-NEXT: folding _Z12barAddHdlperii into _Z6fooAddii
2323
# SAFEICFCHECK-NEXT: folding _Z6barSubii into _Z6fooSubii

bolt/test/X86/icf-safe-test2GlobalConstPtrPicExtFuncRef.test

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
# ICFCHECK-NEXT: folding _Z6barMulii into _Z6fooMulii
1616
# ICFCHECK-NEXT: folding _Z6barSubii into _Z6fooSubii
1717

18-
# SAFEICFCHECK: skipping function _Z12barAddHdlperii
19-
# SAFEICFCHECK-NEXT: skipping function _Z19fooGlobalFuncHelperii
18+
# SAFEICFCHECK: skipping function _Z6fooMulii
2019
# SAFEICFCHECK-NEXT: skipping function _Z6barAddii
21-
# SAFEICFCHECK-NEXT: skipping function _Z6fooMulii
20+
# SAFEICFCHECK-NEXT: skipping function _Z12barAddHdlperii
21+
# SAFEICFCHECK-NEXT: skipping function _Z19fooGlobalFuncHelperii
2222
# SAFEICFCHECK-NEXT: ICF iteration 1
2323
# SAFEICFCHECK-NEXT: folding _Z6barSubii into _Z6fooSubii
2424
# SAFEICFCHECK-NEXT: ===---------

bolt/test/X86/icf-safe-test2GlobalVarO0.test

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
# ICFCHECK-NEXT: folding _Z6barMulii into _Z6fooMulii
1414
# ICFCHECK-NEXT: folding _Z6barSubii into _Z6fooSubii
1515

16-
# SAFEICFCHECK: skipping function _Z6barAddii
16+
# SAFEICFCHECK: skipping function _Z6fooMulii
1717
# SAFEICFCHECK-NEXT: skipping function _Z6barMulii
18-
# SAFEICFCHECK-NEXT: skipping function _Z6fooMulii
18+
# SAFEICFCHECK-NEXT: skipping function _Z6barAddii
1919
# SAFEICFCHECK-NEXT: ICF iteration 1
2020
# SAFEICFCHECK-NEXT: folding _Z6barSubii into _Z6fooSubii
2121
# SAFEICFCHECK-NEXT: ===---------

bolt/test/X86/icf-safe-test2GlobalVarO3.test

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
# ICFCHECK-NEXT: folding _Z6barMulii into _Z6fooMulii
1414
# ICFCHECK-NEXT: folding _Z6barSubii into _Z6fooSubii
1515

16-
# SAFEICFCHECK: skipping function _Z6barAddii
16+
# SAFEICFCHECK: skipping function _Z6fooMulii
1717
# SAFEICFCHECK-NEXT: skipping function _Z6barMulii
18-
# SAFEICFCHECK-NEXT: skipping function _Z6fooMulii
18+
# SAFEICFCHECK-NEXT: skipping function _Z6barAddii
1919
# SAFEICFCHECK-NEXT: ICF iteration 1
2020
# SAFEICFCHECK-NEXT: folding _Z6barSubii into _Z6fooSubii
2121
# SAFEICFCHECK-NEXT: ===---------

0 commit comments

Comments
 (0)