LinkAllPasses.h revision 7ba98a90008727e2fa0dfc1787cad71e1b6021eb
1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project//===- llvm/LinkAllPasses.h ------------ Reference All Passes ---*- C++ -*-===// 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project// 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project// The LLVM Compiler Infrastructure 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project// 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project// This file was developed by Jeff Cohen and is distributed under the 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project// University of Illinois Open Source License. See LICENSE.TXT for details. 7727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease// 8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project//===----------------------------------------------------------------------===// 9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project// 10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project// This header file pulls in all transformation and analysis passes for tools 11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project// like opt and bugpoint that need this functionality. 12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project// 13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project//===----------------------------------------------------------------------===// 14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef LLVM_LINKALLPASSES_H 16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define LLVM_LINKALLPASSES_H 17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Analysis/AliasSetTracker.h" 19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Analysis/FindUsedTypes.h" 20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Analysis/IntervalPartition.h" 21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Analysis/LoadValueNumbering.h" 22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Analysis/Passes.h" 23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Analysis/PostDominators.h" 24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Analysis/ScalarEvolution.h" 25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/CodeGen/Passes.h" 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Function.h" 27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Transforms/Instrumentation.h" 28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Transforms/IPO.h" 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Transforms/Scalar.h" 30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h" 31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <cstdlib> 32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projectnamespace { 34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project struct ForcePassLinking { 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ForcePassLinking() { 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project // We must reference the passes in such a way that compilers will not 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project // delete it all as dead code, even with whole program optimization, 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project // yet is effectively a NO-OP. As the compiler isn't smart enough 39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project // to know that getenv() never returns -1, this will do the job. 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project if (std::getenv("bar") != (char*) -1) 41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project return; 42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createAAEvalPass(); 44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createAggressiveDCEPass(); 45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createAliasAnalysisCounterPass(); 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createAliasDebugger(); 47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createAndersensPass(); 48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createArgumentPromotionPass(); 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createBasicAliasAnalysisPass(); 50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createBasicVNPass(); 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createBlockPlacementPass(); 52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createBlockProfilerPass(); 53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createBreakCriticalEdgesPass(); 54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createCFGSimplificationPass(); 55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createConstantMergePass(); 56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createConstantPropagationPass(); 57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createCorrelatedExpressionEliminationPass(); 58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createDeadArgEliminationPass(); 59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createDeadCodeEliminationPass(); 60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createDeadInstEliminationPass(); 61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createDeadStoreEliminationPass(); 62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createDeadTypeEliminationPass(); 63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createEdgeProfilerPass(); 64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createEmitFunctionTablePass(); 65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createFunctionInliningPass(); 66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createFunctionProfilerPass(); 67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createFunctionResolvingPass(); 68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createGCSEPass(); 69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createGlobalDCEPass(); 70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createGlobalOptimizerPass(); 71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createGlobalsModRefPass(); 72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createIPConstantPropagationPass(); 73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createIPSCCPPass(); 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createIndVarSimplifyPass(); 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createInstructionCombiningPass(); 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createInternalizePass(false); 770a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project (void) llvm::createLCSSAPass(); 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createLICMPass(); 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createLoadValueNumberingPass(); 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createLoopExtractorPass(); 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createLoopSimplifyPass(); 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createLoopStrengthReducePass(); 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createLoopUnrollPass(); 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createLoopUnswitchPass(); 85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createLowerAllocationsPass(); 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createLowerGCPass(); 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createLowerInvokePass(); 880a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project (void) llvm::createLowerPackedPass(); 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createLowerSelectPass(); 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createLowerSetJmpPass(); 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createLowerSwitchPass(); 920a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project (void) llvm::createNoAAPass(); 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createNoProfileInfoPass(); 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createProfileLoaderPass(); 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createPromoteMemoryToRegisterPass(); 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createDemoteRegisterToMemoryPass(); 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createPruneEHPass(); 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createRaiseAllocationsPass(); 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createReassociatePass(); 100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createSCCPPass(); 101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createScalarReplAggregatesPass(); 102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createSimplifyLibCallsPass(); 103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createSingleLoopExtractorPass(); 104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createStripSymbolsPass(); 105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createTailCallEliminationPass(); 1060a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project (void) llvm::createTailDuplicationPass(); 107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createTraceBasicBlockPass(); 108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createUnifyFunctionExitNodesPass(); 109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createCondPropagationPass(); 110ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease (void) llvm::createNullProfilerRSPass(); 111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createRSProfilingPass(); 112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createIndMemRemPass(); 113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createInstCountPass(); 114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void) llvm::createPredicateSimplifierPass(); 115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void)new llvm::IntervalPartition(); 117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void)new llvm::ImmediateDominators(); 118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void)new llvm::PostDominatorSet(); 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void)new llvm::FindUsedTypes(); 120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (void)new llvm::ScalarEvolution(); 1210a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project ((llvm::Function*)0)->viewCFGOnly(); 122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project llvm::AliasSetTracker X(*(llvm::AliasAnalysis*)0); 123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project X.add((llvm::Value*)0, 0); // for -print-alias-sets 124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } 125ec0bab5697bb31ba980810145f62e3799946ec60Victoria Lease } ForcePassLinking; // Force link by creating a global definition. 126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project} 127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif 129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project