LLVM API Documentation

LinkAllPasses.h

Go to the documentation of this file.
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