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" 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); }