extern "C" void LLVMRustPrintPasses() { LLVMInitializePasses(); struct MyListener : PassRegistrationListener { void passEnumerate(const PassInfo *Info) { #if LLVM_VERSION_GE(4, 0) StringRef PassArg = Info->getPassArgument(); StringRef PassName = Info->getPassName(); if (!PassArg.empty()) { // These unsigned->signed casts could theoretically overflow, but // realistically never will (and even if, the result is implementation // defined rather plain UB). printf("%15.*s - %.*s\n", (int)PassArg.size(), PassArg.data(), (int)PassName.size(), PassName.data()); } #else if (Info->getPassArgument() && *Info->getPassArgument()) { printf("%15s - %s\n", Info->getPassArgument(), Info->getPassName()); } #endif } } Listener; PassRegistry *PR = PassRegistry::getPassRegistry(); PR->enumerateWith(&Listener); }
extern "C" LLVMPassRef LLVMRustFindAndCreatePass(const char *PassName) { StringRef SR(PassName); PassRegistry *PR = PassRegistry::getPassRegistry(); const PassInfo *PI = PR->getPassInfo(SR); if (PI) { return wrap(PI->createPass()); } return nullptr; }
extern "C" LLVMPassRef LLVMCreatePass(const char * PassName) { StringRef SR(PassName); PassRegistry * PR = PassRegistry::getPassRegistry(); const PassInfo * PI = PR->getPassInfo(SR); if (PI) { return wrap(PI->createPass()); } else { return (LLVMPassRef)0; } }
extern "C" Pass* LLVMRustFindAndCreatePass(const char *PassName) { StringRef SR(PassName); PassRegistry *PR = PassRegistry::getPassRegistry(); const PassInfo *PI = PR->getPassInfo(SR); if (PI) { return PI->createPass(); } return NULL; }
extern "C" bool LLVMRustAddPass(LLVMPassManagerRef PM, const char *PassName) { PassManagerBase *pm = unwrap(PM); StringRef SR(PassName); PassRegistry *PR = PassRegistry::getPassRegistry(); const PassInfo *PI = PR->getPassInfo(SR); if (PI) { pm->add(PI->createPass()); return true; } return false; }
extern "C" void LLVMRustPrintPasses() { LLVMInitializePasses(); struct MyListener : PassRegistrationListener { void passEnumerate(const PassInfo *info) { if (info->getPassArgument() && *info->getPassArgument()) { printf("%15s - %s\n", info->getPassArgument(), info->getPassName()); } } } listener; PassRegistry *PR = PassRegistry::getPassRegistry(); PR->enumerateWith(&listener); }
static void initializePassOnce(PassRegistry &Registry) { const char *Name = "Hexagon Expand Predicate Spill Code"; PassInfo *PI = new PassInfo(Name, "hexagon-spill-pred", &HexagonExpandPredSpillCode::ID, nullptr, false, false); Registry.registerPass(*PI, true); }
static void initializePassOnce(PassRegistry &Registry) { PassInfo *PI = new PassInfo("Hexagon CFG Optimizer", "hexagon-cfg", &HexagonCFGOptimizer::ID, nullptr, false, false); Registry.registerPass(*PI, true); }
static void initializePassOnce(PassRegistry &Registry) { const char *Name = "Hexagon Expand Condsets"; PassInfo *PI = new PassInfo(Name, "expand-condsets", &HexagonExpandCondsets::ID, 0, false, false); Registry.registerPass(*PI, true); }