diff --git a/bolt/lib/Core/BinaryContext.cpp b/bolt/lib/Core/BinaryContext.cpp --- a/bolt/lib/Core/BinaryContext.cpp +++ b/bolt/lib/Core/BinaryContext.cpp @@ -1534,6 +1534,9 @@ } bool BinaryContext::shouldEmit(const BinaryFunction &Function) const { + if (Function.isPseudo()) + return false; + if (opts::processAllFunctions()) return true; diff --git a/bolt/lib/Passes/LongJmp.cpp b/bolt/lib/Passes/LongJmp.cpp --- a/bolt/lib/Passes/LongJmp.cpp +++ b/bolt/lib/Passes/LongJmp.cpp @@ -345,6 +345,11 @@ CurrentIndex = 0; bool ColdLayoutDone = false; for (BinaryFunction *Func : SortedFunctions) { + if (!BC.shouldEmit(*Func)) { + HotAddresses[Func] = Func->getAddress(); + continue; + } + if (!ColdLayoutDone && CurrentIndex >= LastHotIndex) { DotAddress = tentativeLayoutRelocColdPart(BC, SortedFunctions, DotAddress);