LinkAllPasses.h revision 6e68106a47e9774476f2f39df572652c1eb5f75c
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===- llvm/LinkAllPasses.h ------------ Reference All Passes ---*- C++ -*-===// 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The LLVM Compiler Infrastructure 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// License. See LICENSE.TXT for details. 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This header file pulls in all transformation and analysis passes for tools 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// like opt and bugpoint that need this functionality. 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)//===----------------------------------------------------------------------===// 143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef LLVM_LINKALLPASSES_H 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LLVM_LINKALLPASSES_H 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/Analysis/AliasSetTracker.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/Analysis/EscapeAnalysis.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/Analysis/FindUsedTypes.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/Analysis/IntervalPartition.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/Analysis/LoopVR.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/Analysis/Passes.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/Analysis/PostDominators.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/Analysis/ScalarEvolution.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/Assembly/PrintModulePass.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/CodeGen/Passes.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/Function.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/Transforms/Instrumentation.h" 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/Transforms/IPO.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/Transforms/Scalar.h" 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h" 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cstdlib> 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct ForcePassLinking { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ForcePassLinking() { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We must reference the passes in such a way that compilers will not 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // delete it all as dead code, even with whole program optimization, 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // yet is effectively a NO-OP. As the compiler isn't smart enough 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to know that getenv() never returns -1, this will do the job. 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (std::getenv("bar") != (char*) -1) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createAAEvalPass(); 46c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch (void) llvm::createAggressiveDCEPass(); 47c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch (void) llvm::createAliasAnalysisCounterPass(); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createAliasDebugger(); 49c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch (void) llvm::createAndersensPass(); 50c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch (void) llvm::createArgumentPromotionPass(); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createStructRetPromotionPass(); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createBasicAliasAnalysisPass(); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createLibCallAliasAnalysisPass(0); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createBlockPlacementPass(); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createBlockProfilerPass(); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createBreakCriticalEdgesPass(); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createCFGSimplificationPass(); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createConstantMergePass(); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createConstantPropagationPass(); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createDeadArgEliminationPass(); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createDeadCodeEliminationPass(); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createDeadInstEliminationPass(); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createDeadStoreEliminationPass(); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createDeadTypeEliminationPass(); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createEdgeProfilerPass(); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createFunctionInliningPass(); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createAlwaysInlinerPass(); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createFunctionProfilerPass(); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createGlobalDCEPass(); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createGlobalOptimizerPass(); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createGlobalsModRefPass(); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createGVNPREPass(); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createIPConstantPropagationPass(); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createIPSCCPPass(); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createIndVarSimplifyPass(); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createInstructionCombiningPass(); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createInternalizePass(false); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createLCSSAPass(); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createLICMPass(); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createLoopExtractorPass(); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createLoopSimplifyPass(); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createLoopStrengthReducePass(); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createLoopUnrollPass(); 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createLoopUnswitchPass(); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createLoopRotatePass(); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createLoopIndexSplitPass(); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createLowerAllocationsPass(); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createLowerInvokePass(); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createLowerSetJmpPass(); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createLowerSwitchPass(); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createNoAAPass(); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createNoProfileInfoPass(); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createProfileLoaderPass(); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createPromoteMemoryToRegisterPass(); 953551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) (void) llvm::createDemoteRegisterToMemoryPass(); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createPruneEHPass(); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createRaiseAllocationsPass(); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createReassociatePass(); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createSCCPPass(); 1003551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) (void) llvm::createScalarReplAggregatesPass(); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createSimplifyLibCallsPass(); 1023551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) (void) llvm::createSimplifyHalfPowrLibCallsPass(); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createSingleLoopExtractorPass(); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createStripSymbolsPass(); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createStripNonDebugSymbolsPass(); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createStripDeadPrototypesPass(); 1073551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) (void) llvm::createTailCallEliminationPass(); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createTailDuplicationPass(); 1093551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) (void) llvm::createJumpThreadingPass(); 1103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) (void) llvm::createUnifyFunctionExitNodesPass(); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createCondPropagationPass(); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createNullProfilerRSPass(); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createRSProfilingPass(); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createIndMemRemPass(); 1153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) (void) llvm::createInstCountPass(); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createPredicateSimplifierPass(); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createCodeGenPreparePass(); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createGVNPass(); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createMemCpyOptPass(); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createLoopDeletionPass(); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createPostDomTree(); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createPostDomFrontier(); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createInstructionNamerPass(); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createPartialSpecializationPass(); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createAddReadAttrsPass(); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createMergeFunctionsPass(); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createPrintModulePass(0); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createPrintFunctionPass("", 0); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void) llvm::createDbgInfoPrinterPass(); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void)new llvm::IntervalPartition(); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void)new llvm::FindUsedTypes(); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void)new llvm::ScalarEvolution(); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void)new llvm::LoopVR(); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (void)new llvm::EscapeAnalysis(); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ((llvm::Function*)0)->viewCFGOnly(); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) llvm::AliasSetTracker X(*(llvm::AliasAnalysis*)0); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) X.add((llvm::Value*)0, 0); // for -print-alias-sets 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } ForcePassLinking; // Force link by creating a global definition. 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)