ARM64SetGlobalLinkage.cpp [plain text]
#include "ARM64.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/Module.h"
#include "llvm/Pass.h"
using namespace llvm;
namespace {
class ARM64SetGlobalLinkage : public FunctionPass {
public:
static char ID; explicit ARM64SetGlobalLinkage() : FunctionPass(ID) {}
virtual bool doInitialization(Module &M);
virtual bool runOnFunction(Function &F);
const char *getPassName() const {
return "Set global linkage";
}
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AU.setPreservesCFG();
FunctionPass::getAnalysisUsage(AU);
}
};
}
char ARM64SetGlobalLinkage::ID = 0;
bool ARM64SetGlobalLinkage::doInitialization(Module &M) {
bool Changed = false;
for (Module::global_iterator I = M.global_begin(),
E = M.global_end(); I != E; ++I) {
if (I->hasPrivateLinkage()) {
I->setLinkage(llvm::GlobalValue::LinkerPrivateLinkage);
Changed = true;
}
}
return Changed;
}
bool ARM64SetGlobalLinkage::runOnFunction(Function &F) {
return false;
}
FunctionPass *llvm::createARM64SetGlobalLinkage() {
return new ARM64SetGlobalLinkage();
}