#include "llvm/Transforms/IPO/CrossDSOCFI.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GlobalObject.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/MDBuilder.h"
#include "llvm/IR/Module.h"
#include "llvm/TargetParser/Triple.h"
#include "llvm/Transforms/IPO.h"
usingnamespacellvm;
#define DEBUG_TYPE …
STATISTIC(NumTypeIds, "Number of unique type identifiers");
namespace {
struct CrossDSOCFI { … };
}
ConstantInt *CrossDSOCFI::extractNumericTypeId(MDNode *MD) { … }
void CrossDSOCFI::buildCFICheck(Module &M) { … }
bool CrossDSOCFI::runOnModule(Module &M) { … }
PreservedAnalyses CrossDSOCFIPass::run(Module &M, ModuleAnalysisManager &AM) { … }