LLVM API Documentation

LinkAllPasses.h

Go to the documentation of this file.
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::createLCSSAPass();
00073       (void) llvm::createLICMPass();
00074       (void) llvm::createLoadValueNumberingPass();
00075       (void) llvm::createLoopExtractorPass();
00076       (void) llvm::createLoopSimplifyPass();
00077       (void) llvm::createLoopStrengthReducePass();
00078       (void) llvm::createLoopUnrollPass();
00079       (void) llvm::createLoopUnswitchPass();
00080       (void) llvm::createLowerAllocationsPass();
00081       (void) llvm::createLowerGCPass();
00082       (void) llvm::createLowerInvokePass();
00083       (void) llvm::createLowerPackedPass();
00084       (void) llvm::createLowerSelectPass();
00085       (void) llvm::createLowerSetJmpPass();
00086       (void) llvm::createLowerSwitchPass();
00087       (void) llvm::createNoAAPass();
00088       (void) llvm::createNoProfileInfoPass();
00089       (void) llvm::createProfileLoaderPass();
00090       (void) llvm::createPromoteMemoryToRegisterPass();
00091       (void) llvm::createDemoteRegisterToMemoryPass();
00092       (void) llvm::createPruneEHPass();
00093       (void) llvm::createRaiseAllocationsPass();
00094       (void) llvm::createRaisePointerReferencesPass();
00095       (void) llvm::createReassociatePass();
00096       (void) llvm::createSCCPPass();
00097       (void) llvm::createScalarReplAggregatesPass();
00098       (void) llvm::createSimplifyLibCallsPass();
00099       (void) llvm::createSingleLoopExtractorPass();
00100       (void) llvm::createSteensgaardPass();
00101       (void) llvm::createStripSymbolsPass();
00102       (void) llvm::createTailCallEliminationPass();
00103       (void) llvm::createTailDuplicationPass();
00104       (void) llvm::createTraceBasicBlockPass();
00105       (void) llvm::createTraceValuesPassForBasicBlocks();
00106       (void) llvm::createTraceValuesPassForFunction();
00107       (void) llvm::createUnifyFunctionExitNodesPass();
00108       (void) llvm::createCondPropagationPass();
00109       (void) llvm::createNullProfilerRSPass();
00110       (void) llvm::createRSProfilingPass();
00111       (void) llvm::createIndMemRemPass();
00112     }
00113   } ForcePassLinking;
00114 }
00115 
00116 #endif