LLVM API Documentation
00001 //===- llvm/LinkAllPasses.h ------------ Reference All Passes ---*- C++ -*-===// 00002 // 00003 // The LLVM Compiler Infrastructure 00004 // 00005 // This file is distributed under the University of Illinois Open Source 00006 // License. See LICENSE.TXT for details. 00007 // 00008 //===----------------------------------------------------------------------===// 00009 // 00010 // This header file pulls in all transformation and analysis passes for tools 00011 // like opt and bugpoint that need this functionality. 00012 // 00013 //===----------------------------------------------------------------------===// 00014 00015 #ifndef LLVM_LINKALLPASSES_H 00016 #define LLVM_LINKALLPASSES_H 00017 00018 #include "llvm/Analysis/AliasSetTracker.h" 00019 #include "llvm/Analysis/FindUsedTypes.h" 00020 #include "llvm/Analysis/IntervalPartition.h" 00021 #include "llvm/Analysis/LoopVR.h" 00022 #include "llvm/Analysis/Passes.h" 00023 #include "llvm/Analysis/PostDominators.h" 00024 #include "llvm/Analysis/ScalarEvolution.h" 00025 #include "llvm/Assembly/PrintModulePass.h" 00026 #include "llvm/CodeGen/Passes.h" 00027 #include "llvm/Function.h" 00028 #include "llvm/Transforms/Instrumentation.h" 00029 #include "llvm/Transforms/IPO.h" 00030 #include "llvm/Transforms/Scalar.h" 00031 #include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h" 00032 #include <cstdlib> 00033 00034 namespace { 00035 struct ForcePassLinking { 00036 ForcePassLinking() { 00037 // We must reference the passes in such a way that compilers will not 00038 // delete it all as dead code, even with whole program optimization, 00039 // yet is effectively a NO-OP. As the compiler isn't smart enough 00040 // to know that getenv() never returns -1, this will do the job. 00041 if (std::getenv("bar") != (char*) -1) 00042 return; 00043 00044 (void) llvm::createAAEvalPass(); 00045 (void) llvm::createAggressiveDCEPass(); 00046 (void) llvm::createAliasAnalysisCounterPass(); 00047 (void) llvm::createAliasDebugger(); 00048 (void) llvm::createAndersensPass(); 00049 (void) llvm::createArgumentPromotionPass(); 00050 (void) llvm::createStructRetPromotionPass(); 00051 (void) llvm::createBasicAliasAnalysisPass(); 00052 (void) llvm::createLibCallAliasAnalysisPass(0); 00053 (void) llvm::createBlockPlacementPass(); 00054 (void) llvm::createBlockProfilerPass(); 00055 (void) llvm::createBreakCriticalEdgesPass(); 00056 (void) llvm::createCFGSimplificationPass(); 00057 (void) llvm::createConstantMergePass(); 00058 (void) llvm::createConstantPropagationPass(); 00059 (void) llvm::createDeadArgEliminationPass(); 00060 (void) llvm::createDeadCodeEliminationPass(); 00061 (void) llvm::createDeadInstEliminationPass(); 00062 (void) llvm::createDeadStoreEliminationPass(); 00063 (void) llvm::createDeadTypeEliminationPass(); 00064 (void) llvm::createEdgeProfilerPass(); 00065 (void) llvm::createFunctionInliningPass(); 00066 (void) llvm::createAlwaysInlinerPass(); 00067 (void) llvm::createFunctionProfilerPass(); 00068 (void) llvm::createGlobalDCEPass(); 00069 (void) llvm::createGlobalOptimizerPass(); 00070 (void) llvm::createGlobalsModRefPass(); 00071 (void) llvm::createGVNPREPass(); 00072 (void) llvm::createIPConstantPropagationPass(); 00073 (void) llvm::createIPSCCPPass(); 00074 (void) llvm::createIndVarSimplifyPass(); 00075 (void) llvm::createInstructionCombiningPass(); 00076 (void) llvm::createInternalizePass(false); 00077 (void) llvm::createLCSSAPass(); 00078 (void) llvm::createLICMPass(); 00079 (void) llvm::createLoopExtractorPass(); 00080 (void) llvm::createLoopSimplifyPass(); 00081 (void) llvm::createLoopStrengthReducePass(); 00082 (void) llvm::createLoopUnrollPass(); 00083 (void) llvm::createLoopUnswitchPass(); 00084 (void) llvm::createLoopRotatePass(); 00085 (void) llvm::createLoopIndexSplitPass(); 00086 (void) llvm::createLowerAllocationsPass(); 00087 (void) llvm::createLowerInvokePass(); 00088 (void) llvm::createLowerSetJmpPass(); 00089 (void) llvm::createLowerSwitchPass(); 00090 (void) llvm::createNoAAPass(); 00091 (void) llvm::createNoProfileInfoPass(); 00092 (void) llvm::createProfileLoaderPass(); 00093 (void) llvm::createPromoteMemoryToRegisterPass(); 00094 (void) llvm::createDemoteRegisterToMemoryPass(); 00095 (void) llvm::createPruneEHPass(); 00096 (void) llvm::createRaiseAllocationsPass(); 00097 (void) llvm::createReassociatePass(); 00098 (void) llvm::createSCCPPass(); 00099 (void) llvm::createScalarReplAggregatesPass(); 00100 (void) llvm::createSimplifyLibCallsPass(); 00101 (void) llvm::createSimplifyHalfPowrLibCallsPass(); 00102 (void) llvm::createSingleLoopExtractorPass(); 00103 (void) llvm::createStripSymbolsPass(); 00104 (void) llvm::createStripNonDebugSymbolsPass(); 00105 (void) llvm::createStripDeadPrototypesPass(); 00106 (void) llvm::createTailCallEliminationPass(); 00107 (void) llvm::createTailDuplicationPass(); 00108 (void) llvm::createJumpThreadingPass(); 00109 (void) llvm::createUnifyFunctionExitNodesPass(); 00110 (void) llvm::createCondPropagationPass(); 00111 (void) llvm::createNullProfilerRSPass(); 00112 (void) llvm::createRSProfilingPass(); 00113 (void) llvm::createIndMemRemPass(); 00114 (void) llvm::createInstCountPass(); 00115 (void) llvm::createPredicateSimplifierPass(); 00116 (void) llvm::createCodeGenPreparePass(); 00117 (void) llvm::createGVNPass(); 00118 (void) llvm::createMemCpyOptPass(); 00119 (void) llvm::createLoopDeletionPass(); 00120 (void) llvm::createPostDomTree(); 00121 (void) llvm::createPostDomFrontier(); 00122 (void) llvm::createInstructionNamerPass(); 00123 (void) llvm::createPartialSpecializationPass(); 00124 (void) llvm::createFunctionAttrsPass(); 00125 (void) llvm::createMergeFunctionsPass(); 00126 (void) llvm::createPrintModulePass(0); 00127 (void) llvm::createPrintFunctionPass("", 0); 00128 (void) llvm::createDbgInfoPrinterPass(); 00129 00130 (void)new llvm::IntervalPartition(); 00131 (void)new llvm::FindUsedTypes(); 00132 (void)new llvm::ScalarEvolution(); 00133 (void)new llvm::LoopVR(); 00134 ((llvm::Function*)0)->viewCFGOnly(); 00135 llvm::AliasSetTracker X(*(llvm::AliasAnalysis*)0); 00136 X.add((llvm::Value*)0, 0); // for -print-alias-sets 00137 } 00138 } ForcePassLinking; // Force link by creating a global definition. 00139 } 00140 00141 #endif