#include "bolt/Passes/ValidateInternalCalls.h"
#include "bolt/Core/BinaryBasicBlock.h"
#include "bolt/Passes/DataflowInfoManager.h"
#include "bolt/Passes/FrameAnalysis.h"
#include "llvm/MC/MCInstPrinter.h"
#include <optional>
#include <queue>
#define DEBUG_TYPE …
namespace llvm {
namespace bolt {
namespace {
BinaryBasicBlock *getInternalCallTarget(BinaryFunction &Function,
const MCInst &Inst) { … }
class StackPointerTrackingForInternalCalls
: public StackPointerTrackingBase<StackPointerTrackingForInternalCalls> { … };
}
void ValidateInternalCalls::fixCFGForPIC(BinaryFunction &Function) const { … }
bool ValidateInternalCalls::fixCFGForIC(BinaryFunction &Function) const { … }
bool ValidateInternalCalls::hasTailCallsInRange(
BinaryFunction &Function) const { … }
bool ValidateInternalCalls::analyzeFunction(BinaryFunction &Function) const { … }
Error ValidateInternalCalls::runOnFunctions(BinaryContext &BC) { … }
}
}