26#include "llvm/Config/llvm-config.h"
28#if LLVM_VERSION_MAJOR < 16
30#include "llvm/IR/LegacyPassManager.h"
31#include "llvm/Support/CommandLine.h"
32#include "llvm/Transforms/IPO.h"
33#include "llvm/Transforms/IPO/PassManagerBuilder.h"
34#include "llvm/Transforms/Scalar.h"
35#include "llvm/Transforms/Scalar/GVN.h"
45static void loadPass(
const PassManagerBuilder &Builder,
46 legacy::PassManagerBase &PM) {
50 PM.add(createGVNPass());
51 PM.add(createSROAPass());
54 PM.add(createGVNPass());
55 PM.add(createSROAPass());
56 PM.add(createLoopDeletionPass());
57 PM.add(createGlobalOptimizerPass());
62 legacy::PassManagerBase &PM) {
67static RegisterStandardPasses
69static RegisterStandardPasses
71static RegisterStandardPasses
76 legacy::PassManagerBase &PM) {
80 PassManagerBuilder Builder2 = Builder;
81 Builder2.Inliner =
nullptr;
82 Builder2.LibraryInfo =
nullptr;
83 Builder2.ExportSummary =
nullptr;
84 Builder2.ImportSummary =
nullptr;
91 const_cast<PassManagerBuilder &
>(Builder2).populateModulePassManager(PM);
94static RegisterStandardPasses
static void loadNVVMPass(const PassManagerBuilder &Builder, legacy::PassManagerBase &PM)
static RegisterStandardPasses clangtoolLoader_LTO(PassManagerBuilder::EP_FullLinkTimeOptimizationEarly, loadLTOPass)
static RegisterStandardPasses clangtoolLoader_Ox(PassManagerBuilder::EP_VectorizerStart, loadPass)
static RegisterStandardPasses clangtoolLoader_OEarly(PassManagerBuilder::EP_EarlyAsPossible, loadNVVMPass)
static void loadLTOPass(const PassManagerBuilder &Builder, legacy::PassManagerBase &PM)
llvm::cl::opt< bool > EnzymeEnable
static void loadPass(const PassManagerBuilder &Builder, legacy::PassManagerBase &PM)
static RegisterStandardPasses clangtoolLoader_O0(PassManagerBuilder::EP_EnabledOnOptLevel0, loadPass)
ModulePass * createEnzymePass(bool PostOpt)
ModulePass * createPreserveNVVMPass(bool Begin)
FunctionPass * createPreserveNVVMFnPass(bool Begin)