LLVM API Documentation
00001 //===- llvm/Transforms/LinkAllPasses.h - Reference All Passes ---*- C++ -*-===// 00002 // 00003 // The LLVM Compiler Infrastructure 00004 // 00005 // This file was developed by Jeff Cohen and is distributed under the 00006 // University of Illinois Open Source License. See LICENSE.TXT for details. 00007 // 00008 //===----------------------------------------------------------------------===// 00009 // 00010 // This header file pulls in all transformation passes for tools like opts and 00011 // bugpoint that need this functionality. 00012 // 00013 //===----------------------------------------------------------------------===// 00014 00015 #ifndef LLVM_TRANSFORMS_LINKALLPASSES_H 00016 #define LLVM_TRANSFORMS_LINKALLPASSES_H 00017 00018 #include "llvm/Analysis/Passes.h" 00019 #include "llvm/Analysis/LoadValueNumbering.h" 00020 #include "llvm/CodeGen/Passes.h" 00021 #include "llvm/Transforms/Instrumentation.h" 00022 #include "llvm/Transforms/IPO.h" 00023 #include "llvm/Transforms/Scalar.h" 00024 #include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h" 00025 #include <cstdlib> 00026 00027 namespace { 00028 struct ForcePassLinking { 00029 ForcePassLinking() { 00030 // We must reference the passes in such a way that compilers will not 00031 // delete it all as dead code, even with whole program optimization, 00032 // yet is effectively a NO-OP. As the compiler isn't smart enough 00033 // to know that getenv() never returns -1, this will do the job. 00034 if (std::getenv("bar") != (char*) -1) 00035 return; 00036 00037 (void) llvm::createAAEvalPass(); 00038 (void) llvm::createAggressiveDCEPass(); 00039 (void) llvm::createAliasAnalysisCounterPass(); 00040 (void) llvm::createAndersensPass(); 00041 (void) llvm::createArgumentPromotionPass(); 00042 (void) llvm::createBasicAliasAnalysisPass(); 00043 (void) llvm::createBasicVNPass(); 00044 (void) llvm::createBlockPlacementPass(); 00045 (void) llvm::createBlockProfilerPass(); 00046 (void) llvm::createBreakCriticalEdgesPass(); 00047 (void) llvm::createCFGSimplificationPass(); 00048 (void) llvm::createConstantMergePass(); 00049 (void) llvm::createConstantPropagationPass(); 00050 (void) llvm::createCorrelatedExpressionEliminationPass(); 00051 (void) llvm::createDSAAPass(); 00052 (void) llvm::createDSOptPass(); 00053 (void) llvm::createDeadArgEliminationPass(); 00054 (void) llvm::createDeadCodeEliminationPass(); 00055 (void) llvm::createDeadInstEliminationPass(); 00056 (void) llvm::createDeadStoreEliminationPass(); 00057 (void) llvm::createDeadTypeEliminationPass(); 00058 (void) llvm::createEdgeProfilerPass(); 00059 (void) llvm::createEmitFunctionTablePass(); 00060 (void) llvm::createFunctionInliningPass(); 00061 (void) llvm::createFunctionProfilerPass(); 00062 (void) llvm::createFunctionResolvingPass(); 00063 (void) llvm::createGCSEPass(); 00064 (void) llvm::createGlobalDCEPass(); 00065 (void) llvm::createGlobalOptimizerPass(); 00066 (void) llvm::createGlobalsModRefPass(); 00067 (void) llvm::createIPConstantPropagationPass(); 00068 (void) llvm::createIPSCCPPass(); 00069 (void) llvm::createIndVarSimplifyPass(); 00070 (void) llvm::createInstructionCombiningPass(); 00071 (void) llvm::createInternalizePass(false); 00072 (void) llvm::createLICMPass(); 00073 (void) llvm::createLoadValueNumberingPass(); 00074 (void) llvm::createLoopExtractorPass(); 00075 (void) llvm::createLoopSimplifyPass(); 00076 (void) llvm::createLoopStrengthReducePass(); 00077 (void) llvm::createLoopUnrollPass(); 00078 (void) llvm::createLoopUnswitchPass(); 00079 (void) llvm::createLowerAllocationsPass(); 00080 (void) llvm::createLowerGCPass(); 00081 (void) llvm::createLowerInvokePass(); 00082 (void) llvm::createLowerPackedPass(); 00083 (void) llvm::createLowerSelectPass(); 00084 (void) llvm::createLowerSetJmpPass(); 00085 (void) llvm::createLowerSwitchPass(); 00086 (void) llvm::createNoAAPass(); 00087 (void) llvm::createNoProfileInfoPass(); 00088 (void) llvm::createProfileLoaderPass(); 00089 (void) llvm::createPromoteMemoryToRegisterPass(); 00090 (void) llvm::createDemoteRegisterToMemoryPass(); 00091 (void) llvm::createPruneEHPass(); 00092 (void) llvm::createRaiseAllocationsPass(); 00093 (void) llvm::createRaisePointerReferencesPass(); 00094 (void) llvm::createReassociatePass(); 00095 (void) llvm::createSCCPPass(); 00096 (void) llvm::createScalarReplAggregatesPass(); 00097 (void) llvm::createSimplifyLibCallsPass(); 00098 (void) llvm::createSingleLoopExtractorPass(); 00099 (void) llvm::createSteensgaardPass(); 00100 (void) llvm::createStripSymbolsPass(); 00101 (void) llvm::createTailCallEliminationPass(); 00102 (void) llvm::createTailDuplicationPass(); 00103 (void) llvm::createTraceBasicBlockPass(); 00104 (void) llvm::createTraceValuesPassForBasicBlocks(); 00105 (void) llvm::createTraceValuesPassForFunction(); 00106 (void) llvm::createUnifyFunctionExitNodesPass(); 00107 (void) llvm::createCondPropagationPass(); 00108 (void) llvm::createNullProfilerRSPass(); 00109 (void) llvm::createRSProfilingPass(); 00110 (void) llvm::createIndMemRemPass(); 00111 } 00112 } ForcePassLinking; 00113 } 00114 00115 #endif